默認的情況下,使用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
