nginx 正向代理 配置 http 和 https

nginx 正向代理 配置 http 和 https,应用场景:同学A 所在公司对外网有所限制,借助云服务器nginx正向代理,实现正常浏览公网资料。

服务端(云服务器):

安装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

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

为nginx 添加补丁

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

修改nginx配置文件

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

刷新nginx配置

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

nginx 正向代理 配置 http 和 https_第1张图片

nginx 正向代理 配置 http 和 https_第2张图片 

 遇到的问题

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 错误

nginx 正向代理 配置 http 和 https_第3张图片

 查阅资料说是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(按实际情况修改),确定。
 

你可能感兴趣的:(nginx,http,https)