nginx配置https正向代理 nginx可以作為http的正向代理伺服器,但是不能用做https的正向代理伺服器。因為http正向代理使用的是get請求,但是https使用的確實connect請求,而nginx不支持connect請求。所以需要第三方模塊ngx_http_proxy_connec ...
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-devel zlib zlib-devel openssl 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"