需求背景: 前段時間公司因為業務需求需要部署一個正向代理,需要內網服務通過正向代理訪問到外網移動端廠商功能變數名稱通道等效果,之前一直用nginx做四層或者七層的反向代理,正向代理還是第一次配置,配置的過程也遇到些小坑,今天就分享出來。 安裝環境準備: nginx本身是不支持https協議請求轉發,為了讓n ...
需求背景:
前段時間公司因為業務需求需要部署一個正向代理,需要內網服務通過正向代理訪問到外網移動端廠商功能變數名稱通道等效果,之前一直用nginx做四層或者七層的反向代理,正向代理還是第一次配置,配置的過程也遇到些小坑,今天就分享出來。
安裝環境準備:
nginx本身是不支持https協議請求轉發,為了讓nginx能達到這一效果需要藉助第三方模塊ngx_http_proxy_connect_module。首先下載這一模塊:https://github.com/chobits/ngx_http_proxy_connect_module到伺服器,然後準備nginx環境
yum -y install pcre-devel zlib-devel gcc gcc+c++ make openssl-devel pcre-devel zlib-devel patch tar xf nginx-1.6.0.tar.gz unzip /root/ngx_http_proxy_connect_module-master.zip cd /root/nginx-1.6.0/ patch -p1 < /root/ngx_http_proxy_connect_module-master/proxy_connect.patch ./configure --add-module=/root/ngx_http_proxy_connect_module-master/ngx_http_proxy_connect_module make && make install
編譯安裝成功後,配置nginx正向代理:
#user nobody; worker_processes 1; #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 { include mime.types; default_type application/octet-stream; #access_log logs/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; server { listen 88; #監聽埠 resolver 183.60.82.98; #dns解析地址 server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass https://$host$request_uri; #設定http代理伺服器的協議和地址 proxy_set_header HOST $host; proxy_buffers 256 4k; proxy_max_temp_file_size 0k; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_next_upstream error timeout invalid_header http_502; #root html; #index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { resolver 8.8.8.8; #dns解析地址 listen 89; #代理監聽埠 proxy_connect; proxy_connect_allow 443 563; location / { proxy_pass https://$host$request_uri; #設定https代理伺服器的協議和地址 proxy_set_header HOST $host; proxy_buffers 256 4k; proxy_max_temp_file_size 0k; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_next_upstream error timeout invalid_header http_502; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
當配置文件配置好之後保存即可,重啟nginx,進行測試:
去內網伺服器里curl,可以在環境變數里添加代理:
vim /etc/profile ... ... #export https_proxy=正向代理IP:埠 export https_proxy=192.168.3.17:89
另一種 方式不用加環境變數,臨時代理
#curl -i --proxy 代理IP:埠 要訪問功能變數名稱 curl -i --proxy 192.168.3.17:89 www.baidu.com