nginx 正向代理 配置 http 和 https,应用场景:同学A 所在公司对外网有所限制,借助云服务器nginx正向代理,实现正常浏览公网资料。
cd /usr/local
wget http://nginx.org/download/nginx-1.10.1.tar.gz
tar -xzvf nginx-1.10.1.tar.gz
mkdir nginx
mv nginx-1.10.1 nginx
cd nginx/nginx-1.10.1
make && make install
编译后默认安装目录为/usr/local/nginx
https://github.com/chobits/ngx_http_proxy_connect_module
把下载的zip包,放到服务器进行解压
cd /usr/local/nginx
unzip ngx_http_proxy_connect_module-master.zip
mv ngx_http_proxy_connect_module-master ngx_http_proxy_connect_module
cd /usr/local/nginx/nginx-1.10.1
patch -p1 < /usr/local/nginx/ngx_http_proxy_connect_module/patch/proxy_connect.patch
./configure --add-module=/usr/local/nginx/ngx_http_proxy_connect_module
make && make install
vim /usr/local/nginx/conf/nginx.conf
添加以下代码
server {
resolver 114.114.114.114;
listen 8019;
proxy_connect;
proxy_connect_allow 443 563;
proxy_connect_connect_timeout 10s;
proxy_connect_read_timeout 10s;
proxy_connect_send_timeout 10s;
location / {
proxy_set_header Host $http_host;
proxy_pass https://$host$request_uri;
}
}
resolver 备选IP:
119.29.29.29 www.dnspod.cn
223.5.5.5 alidns.com
180.76.76.76 dudns.baidu.com
cd /usr/local/nginx/sbin
./nginx -s reload
curl http://www.baidu.com/ -v -x 127.0.0.1:8019
curl https://www.baidu.com/ -v -x 127.0.0.1:8019
1、ssl 问题
nginx: [emerg] the
"ssl"
parameter requires ngx_http_ssl_module
in
/usr/local/nginx/conf/nginx.conf:37
解决方法:
回到nginx-1.10.1 目录下执行
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx/ngx_http_proxy_connect_module --with-http_ssl_module
把ssl模块配置上(原理不详,原来nginx 反向代理 ssl访问是没问题的)
2、https 访问报 400 错误
查阅资料说是proxy_connect 没建立,也就是说上面步骤中添加的第三方模块没生效,
后来借助一位大佬的博客,发现有一个步骤没有进行,就是在patch,./configure 之后,要把原有的nginx包替换
切换到 nginx-1.10.1目录下
cp objs/nginx /usr/local/nginx/sbin/nginx
再执行 make install
打开“控制面板”或“IE浏览器”-“Internet选项”-“连接”选项卡-“局域网设置”-“代理服务器”,勾选“为LAN使用代理服务器”,地址111.111.111.111(云服务器ip),端口8019(按实际情况修改),确定。