好久沒寫部落格了,在我遇到困難的時候,總能從網上找到一些大牛們寫的文章,解決我的問題。之前由於事情多,都是作為一個索取者,接下來有時間,我會盡量多寫些部落格,把我遇到的問題的解決辦法,寫到部落格上,分享給大家,作為回饋,也希望大家有時間都能夠把自己平常遇到的問題寫成部落格,分享給更多的人,讓大家少走彎路。
這兩天在研究nginx的正向 Proxy,想通過nginx搭建一個httpProxy 伺服器,網站找到了這篇文章(http://www.cnblogs.com/inteliot/archive/2013/01/11/2855907.html):
配置 Nginx Http Proxy Proxy 伺服器,與 [Squid] 功能一樣,適用於正向 Proxy Http 網站。 一,Nginx 正向 Proxy設定檔:
server { resolver 8.8.8.8; resolver_timeout 5s; listen 0.0.0.0:8080; access_log /home/reistlin/logs/proxy.access.log; error_log /home/reistlin/logs/proxy.error.log; location / { proxy_pass $scheme://$host$request_uri; proxy_set_header Host $http_host; 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;#allow 127.0.0.1;#deny all;}}
二,Nginx 正向 Proxy配置說明:
1,配置 DNS 解析 IP 位址,比如 Google Public DNS,以及逾時時間(5秒)。
resolver 8.8.8.8;resolver_timeout 5s;
2,配置正向 Proxy參數,均是由 Nginx 變數組成。其中 proxy_set_header 部分的配置,是為瞭解決如果 URL 中帶 "."(點)後 Nginx 503 錯誤。
proxy_pass $scheme://$host$request_uri;proxy_set_header Host $http_host;
3,配置緩衝大小,關閉磁碟緩衝讀寫減少I/O,以及代理連線逾時時間。
proxy_buffers 256 4k;proxy_max_temp_file_size 0;proxy_connect_timeout 30;
4,配置Proxy 伺服器 Http 狀態緩衝時間。
proxy_cache_valid 200 302 10m;proxy_cache_valid 301 1h;proxy_cache_valid any 1m;
三,不支援代理 Https 網站
因為 Nginx 不支援 CONNECT,所以無法正向 Proxy Https 網站(網上銀行,Gmail)。
如果訪問 Https 網站,比如:https://www.google.com,Nginx access.log 日誌如下:
"CONNECT www.google.com:443 HTTP/1.1" 400
作者寫的很棒,不過,我在配置過程中,遇到問題,就是通過配置的代理訪問頁面都報404(我的nginx版本:1.2),後來我發現需要改下proxy_pass:
proxy_pass $scheme://$host$request_uri;
改成:
proxy_pass $scheme://$http_host$request_uri;
這樣就可以了,另外我加上了ip的限制,大家有需要可以將上面的注釋開啟就行:
allow 127.0.0.1;deny all;
經驗證,上面的代碼是可以用的。伺服器端得到的代碼如下,不過不知道怎麼會帶了一個proxy-connection,這估計只能算是普通匿名,不能算是進階匿名:
head info:{content-type=application/x-www-form-urlencoded; charset=UTF-8, connection=close, content-length=42, user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36, proxy-connection=Keep-Alive}