1. 程式人生 > >使用Nginx實現正向代理

使用Nginx實現正向代理

一、正向代理的概念

  • 正向代理是一個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理髮送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。
  • 客戶端必須要進行一些特別的設定才能使用正向代理。

下面以Nginx為例介紹如何搭建正向代理伺服器。

二、Nginx正向代理配置

server {

resolver 8.8.8.8;
resolver_timeout 5s;
listen 81;
location / {

allow 192.168.0.0/24;
deny all;
proxy_pass $scheme://$host$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $host;
proxy_set_header X-Forwarded-For $host;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_busy_buffers_size 256k;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0;
proxy_connect_timeout 30;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
}

access_log off;
#access_log /var/log/nginx/proxy_access.log

}

三、Nginx正向代理配置說明

  • 配置DNS解析IP地址。

比如Google DNS,以及超時時間(5秒)。

resolver 8.8.8.8;
resolver_timeout 5s;

注意項:

  1. 不能有hostname。
  2. 必須有resolver, 即dns。即上面的x.x.x.x,換成你們的DNS伺服器ip即可。
  • 配置正向代理引數

代理引數均是由Nginx變數組成,其中proxy_set_header部分的配置是為了解決如果URL中帶”.”(點)後Nginx 503錯誤。

proxy_pass $scheme://$host$request_uri; #$http_host和$request_uri是Nginx系統變數。
proxy_set_header Host $http_host;

配置快取大小,關閉磁碟快取讀寫減少I/O,以及代理連線超時時間。

proxy_buffers 256 4k; #設定用於讀取應答(來自被代理伺服器)的緩衝區數目和大小,預設情況也為分頁大小,根據作業系統的不同可能是4k或者8k。
proxy_max_temp_file_size 0; #當代理緩衝區過大時使用一個臨時檔案的最大值,如果檔案大於這個值,將同步傳遞請求而不寫入磁碟進行快取。如果這個值設定為零,則禁止使用臨時檔案。
proxy_connect_timeout 30;
proxy_busy_buffers_size 256k; #高負荷下緩衝大小(proxy_buffers*2)

配置代理伺服器 Http 狀態快取時間。

proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;

四、其它

因為Nginx不支援CONNECT,所以無法正向代理Https網站(如:網上銀行,Gmail)。

五、參考文件

http://www.google.com
http://crazyming.blog.51cto.com/1048571/564176

原文來自微信公眾號:運維之美