Centos7使用Nginx配置HTTPS正向代理
Nginx默認安裝只支持代理HTTP, 不支持代理 HTTPS, 如果需要支持HTTPS需要在Nginx編譯時加入 ngx_http_proxy_connect_module.
文件準備
- 從 ngx_http_proxy_connect_module 模塊倉庫下載源代碼壓縮包, 并確定支持的 Nginx 版本
- 倉庫地址: https://github.com/chobits/ngx_http_proxy_connect_module/
- 得到文件: ngx_http_proxy_connect_module-master.zip
- 當前支持的 Nginx 最高版本為 1.25.x
- 從 Nginx 官網(wǎng)下載對應版本的源代碼壓縮包
- 下載列表: http://nginx.org/download/
- 得到文件: nginx-1.25.5.tar.gz
環(huán)境準備
需要一臺能訪問目標網(wǎng)絡的服務器, 并新安裝 Centos7 環(huán)境
更新各模塊安裝包
sudo yum update
安裝編譯Nginx需要的工具
sudo yum install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel patch unzip
編譯 Nginx
在同一目錄下解壓 Nginx 和 ngx_http_proxy_connect_module.
tar -xzvf nginx-1.25.5.tar.gz
unzip ngx_http_proxy_connect_module-master.zip
應用補丁, Nginx 版本1.25.5 對應的補丁文件是 proxy_connect_rewrite_102101.patch, 如果是其它版本, 請參照 https://github.com/chobits/ngx_http_proxy_connect_module/ 上的說明確認對應的補丁文件
cd nginx-1.25.5
patch -p1 --verbose < ../ngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite_102101.patch
配置編譯環(huán)境, 如果配置過程中報錯, 需要排查并解決錯誤
./configure --add-module=../ngx_http_proxy_connect_module-master
編譯
make
安裝
sudo make install
Nginx 會被默認安裝到 /usr/local/nginx 目錄
配置 Nginx
編輯 /usr/local/nginx/conf/nginx.conf, 在 http { }
內(nèi)增加一個新的 server
配置, 內(nèi)容如下
其中:
-
listen 3128;
是代理的端口, 可以換成其它端口 -
server_name 192.168.9.160;
是代理服務器自身IP, 需要換成你的環(huán)境中服務器的IP -
resolver 114.114.114.114;
是代理服務器使用的DNS服務器, 需要換成你的環(huán)境下可用的DNS服務器地址 - 其他配置不需要修改
server {
listen 3128;
server_name 192.168.9.160;
resolver 114.114.114.114;
# forward proxy for CONNECT requests
proxy_connect;
proxy_connect_allow 443 563;
proxy_connect_connect_timeout 10s;
proxy_connect_data_timeout 10s;
# Example: reverse proxy for non-CONNECT requests
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
}
}
檢查配置格式是否正確, 如果有錯誤信息, 需要先排查問題
sudo /usr/local/nginx/sbin/nginx -t
啟動Nginx服務
sudo /usr/local/nginx/sbin/nginx
打開防火墻端口
如果服務器開啟了 firewalld 等防火墻服務, 需要打開上面設置的代理端口, 允許其它機器訪問
檢驗
首先打開 Nginx 日志
tail -f /usr/loca/nginx/logs/access.log
在另一臺服務器上, 使用 curl 工具進行測試, 下面的命令中需要將192.168.9.160:3128
換成自己環(huán)境下配置的代理服務器IP和端口文章來源:http://www.zghlxwxcb.cn/news/detail-858559.html
curl https://twitter.com/ -v -x 192.168.9.160:3128
如果代理工作正常, 如果輸出如下結果, 則表示配置成功文章來源地址http://www.zghlxwxcb.cn/news/detail-858559.html
* About to connect() to proxy 192.168.9.160 port 3128 (#0)
* Trying 192.168.9.160...
* Connected to 192.168.9.160 (192.168.9.160) port 3128 (#0)
* Establish HTTP proxy tunnel to twitter.com:443
> CONNECT twitter.com:443 HTTP/1.1
> Host: twitter.com:443
> User-Agent: curl/7.29.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection Established
< Proxy-agent: nginx
<
* Proxy replied OK to CONNECT request
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
...
< HTTP/1.1 200 OK
< Date: Wed, 13 Mar 2024 08:16:22 GMT
...
到了這里,關于Centos7使用Nginx配置HTTPS正向代理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!