預設的情況下,使用nginx做正向代理可以解析http請求,
對於諸如baidu.com這樣的https請求,nginx預設並不支援,不過我們可以藉助第三方模組來實現。
1、先說預設情況下的代理配置
配置方法如下:
#user nobody; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { server { resolver 192.168.31.1; resolver_timeout 5s; listen 8888; access_log /nginx-1.10.3/logs/proxy.access.log; error_log /nginx-1.10.3/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; } } }
listen的就是監聽的埠。
resolver就是一個dns地址,如果在家裡用路由器上網,一般也可以配成你的路由器地址。
其它配置不改也行,這樣配置後,對非https的訪問沒什麼問題,不過這顯然不夠用,我們接著講一下如何實現https的代理。
2、再說用nginx同時代理https和http
這裡我們需要藉助大神開發的【ngx_http_proxy_connect_module】
首先要確保你安裝了patch,gcc、gcc++、pcre、zlib,這些都是我們用到的依賴軟體或靜態庫
yum group install -y "Development Tools" yum install -y patch pcre-devel pcre zlib-devel zlib
然後去github下載下來這個模組,就是直接去官網把整個目錄下下來,解壓放到你centos的某個目錄下。
我這裡留了個百度網盤的備份: 連結:https://pan.baidu.com/s/1eqcFW8tEE6SEg3b9OHyThA 密碼:c8e2
再下載nginx、按照官網說明執行以下命令
$ wget http://nginx.org/download/nginx-1.9.2.tar.gz $ tar -xzvf nginx-1.9.2.tar.gz $ cd nginx-1.9.2/ $ patch -p1 < /path/to/ngx_http_proxy_connect_module/proxy_connect.patch $ ./configure --add-module=/path/to/ngx_http_proxy_connect_module $ make && make install
注意其中的【/path/to/ngx_http_proxy_connect_module】,指的就是你從github上,下載的這個模組的存放路徑。
完成後,/usr/local/nginx就是編譯後的nginx的路徑。
然後編輯/usr/local/nginx/conf/nginx.conf(注意備份原檔案),修改後內容如下:
worker_processes 1; events { worker_connections 1024; } http { server { resolver 192.168.31.1; resolver_timeout 5s; listen 8889; proxy_connect; proxy_connect_allow 443 563; proxy_connect_connect_timeout 10s; proxy_connect_read_timeout 10s; proxy_connect_send_timeout 10s; location / { #proxy_pass $scheme://$host$request_uri; #proxy_set_header Host $http_host; proxy_pass http://$host; proxy_set_header Host $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; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
然後儲存。
listen的就是監聽的埠。
resolver就是一個dns地址,如果在家裡用路由器上網,一般也可以配成你的路由器地址。
最後執行:
/usr/bin/local/nginx/sbin/nginx
找一臺外網的機器,配置一下代理,百度上檢視一下本機ip,如果成功的話,顯示的就是代理伺服器的外網IP了。
再附一篇介紹--CentOS如何通過代理上網:
http://www.cnblogs.com/flying607/p/8709640.html