很多同學喜歡用nginx做反向代理訪問某些網站,原因大家都懂的,今天老高記錄一下如何使用nginx做反向代理以及如何配置和優化nginx的反向代理。

准備工作

首先,你需要一個穩定的國外的便宜的VPS,老高推薦搬瓦工,當然你有DO等更快的更貴的VPS就例外了,老高的博客就建立在這個VPS上的。

如何獲取你的VPS,請移步 30元一年,打造自己的翻牆VPS

假設你已經有了自己的VPS,我們以后假定安裝了centos。那么安裝前,一定要執行命令 yum update -y ,讓系統處於最新的狀態!

下面我們就開始折騰吧!

下載和安裝nginx

當然要使用最新穩定版的nginx,其他版本也行。

然后我們開始編譯和安裝。

具體操作請參考 安裝編譯nginx , 注意nginx的編譯參數。其中--with-http_spdy_module是Google的SPDY,還不是很穩定,所以如果你不需要這個功能,編譯的時候請刪除。

當安裝完畢后應該能夠訪問到這個頁面

Welcome to nginx!

然后參考 nginx配置詳解 讓需要反代的域名工作起來,比如綁定域名等工作。

配置反代

簡單的反代就是http,也沒有什么緩存控制等高級功能,僅僅一個簡單的代理,比如反代老高的博客 http://www.phpgao.com

其實nginx+php也是反代,如下:

location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include    fastcgi_params;
}

而復雜點的反代應該就是反代Google一類的https網站,訪問量可能會比較大,有緩存等功能,比如 https://www.google.com

簡單反代

下面老高的域名www.phpgao.com代理某網站為例,介紹如何使用反代

編輯/etc/nginx.conf文件,新建一個server,輸入以下內容

server {
    listen       80;
    server_name  www.phpgao.com;
#charset koi8-r;
#access_log  /var/log/nginx/log/www.phpgao.com.access.log  main;
error_log   /var/log/nginx/log/www.phpgao.com.error.log;
location / {
    sub_filter t66y.com www.phpgao.com; # 地址重寫
    proxy_pass        http://t66y.com;
    #proxy_redirect     off;
    #proxy_set_header   Host $host;
    proxy_set_header   X-Real-IP  $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   Referer http://$host;
}
error_page  404              /404.html;
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

}

然后重啟nginx

service nginx restart

折騰了一番,讓我們來看看成果吧!

1024你懂得

需要注意

  • sub_filter需要ngx_http_sub_module模塊,編譯時需要加上對應參數。

Reference:

http://nginx.com/resources/admin-guide/reverse-proxy/