nginx配置https正向代理
nginx可以作为http的正向代理服务器,但是不能用做https的正向代理服务器。因为http正向代理使用的是get请求,但是https使用的确实connect请求,而nginx不支持connect请求。所以需要第三方模块ngx_http_proxy_connect_module 来支持https的正向代理。
注:NGINX需部署在可以上网的服务器上,请严格按照下图安装和nginx版本匹配的模块,否则会导致https代理不生效。
一、安装相关编译环境及相关依赖:
yum -y install gcc gcc-c++pcre pcre-develzlib zlib-developenssl openssl-devel
上传nginx安装包并解压:
# tar zxvf nginx-1.22.0.tar.gz
# cd nginx-1.22.0
二、加载ngx_http_proxy_connect_module模块,安装nginx
下载ngx_http_proxy_connect_module-master.zip文件
github下载地址:https://github.com/chobits/ngx_http_proxy_connect_module.git
# unzip ngx_http_proxy_connect_module-master.zip
#cd /usr/local/nginx
#sudo patch -p1 < /root/nginx/ngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite_102101.patch
# ./configure –prefix=/usr/local/nginx –with-http_ssl_module –with-http_realip_module –with-stream –with-stream_ssl_module –add-module=/root/ngx_http_proxy_connect_module-master
# make && make install
三、NGINX增加全局代理配置
server {
listen 8088; #对外服务端口
resolver 114.114.114.114; #域名解析服务器
proxy_connect;
proxy_connect_allow all;
proxy_connect_connect_timeout 10s;
proxy_connect_read_timeout 10s;
proxy_connect_send_timeout 10s;
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
}
}
/usr/local/nginx/sbin/nginx #启动nginx
四、在没有外网的机器配置全局代理用户变量
针对各别用户代理可编辑对应的 ~/.bashrc文件,针对全局用户可编辑/etc/profile文件!
http_proxy=192.168.251.5:8088 #NGINX服务器与端口
https_proxy=192.168.251.5:8088
ftp_proxy=192.168.251.5:8088
export http_proxy https_proxy ftp_proxy
#source ~/.bashrc 或者 source /etc/profile
五、测试正向代理是否生效
在无法上网的机器执行以下命令
curl https://www.baidu.com
查看nginx日志
tail -f /usr/local/nginx/logs/access.log
出现以下内容则表示全局正向代理配置完成
“CONNECT www.baidu.com:443 HTTP/1.1” 200 7198 “-” “curl/7.29.0”