需求背景:
前段時間公司因為業務需求需要部署一個正向代理,需要內網服務通過正向代理訪問到外網移動端廠商域名通道等效果,之前一直用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
