翼度科技»论坛 云主机 LINUX 查看内容

Centos7使用Nginx配置HTTPS正向代理

11

主题

11

帖子

33

积分

新手上路

Rank: 1

积分
33
Centos7使用Nginx配置HTTPS正向代理

Nginx默认安装只支持代理HTTP, 不支持代理 HTTPS, 如果需要支持HTTPS需要在Nginx编译时加入 ngx_http_proxy_connect_module.
文件准备

环境准备

需要一台能访问目标网络的服务器, 并新安装 Centos7 环境
更新各模块安装包
  1. sudo yum update
复制代码
安装编译Nginx需要的工具
  1. sudo yum install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel patch unzip
复制代码
编译 Nginx

在同一目录下解压 Nginx 和 ngx_http_proxy_connect_module.
  1. tar -xzvf nginx-1.25.5.tar.gz
  2. 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/ 上的说明确认对应的补丁文件
  1. cd nginx-1.25.5
  2. patch -p1 --verbose < ../ngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite_102101.patch
复制代码
配置编译环境, 如果配置过程中报错, 需要排查并解决错误
  1. ./configure --add-module=../ngx_http_proxy_connect_module-master
复制代码
编译
  1. make
复制代码
安装
  1. sudo make install
复制代码
Nginx 会被默认安装到 /usr/local/nginx 目录
配置 Nginx

编辑 /usr/local/nginx/conf/nginx.conf, 在 http {  } 内增加一个新的 server 配置, 内容如下
其中:

  • listen       3128; 是代理的端口, 可以换成其它端口
  • server_name  192.168.9.160; 是代理服务器自身IP, 需要换成你的环境中服务器的IP
  • resolver     114.114.114.114; 是代理服务器使用的DNS服务器, 需要换成你的环境下可用的DNS服务器地址
  • 其他配置不需要修改
  1.     server {
  2.         listen       3128;
  3.         server_name  192.168.9.160;
  4.         resolver     114.114.114.114;
  5.         # forward proxy for CONNECT requests
  6.         proxy_connect;
  7.         proxy_connect_allow            443 563;
  8.         proxy_connect_connect_timeout  10s;
  9.         proxy_connect_data_timeout     10s;
  10.         # Example: reverse proxy for non-CONNECT requests
  11.         location / {
  12.             proxy_pass http://$host;
  13.             proxy_set_header Host $host;
  14.         }
  15.     }
复制代码
检查配置格式是否正确, 如果有错误信息, 需要先排查问题
  1. sudo /usr/local/nginx/sbin/nginx -t
复制代码
启动Nginx服务
  1. sudo /usr/local/nginx/sbin/nginx
复制代码
打开防火墙端口

如果服务器开启了 firewalld 等防火墙服务, 需要打开上面设置的代理端口, 允许其它机器访问
检验

首先打开 Nginx 日志
  1. tail -f /usr/loca/nginx/logs/access.log
复制代码
在另一台服务器上, 使用 curl 工具进行测试, 下面的命令中需要将192.168.9.160:3128换成自己环境下配置的代理服务器IP和端口
  1. curl https://twitter.com/ -v -x 192.168.9.160:3128
复制代码
如果代理工作正常, 如果输出如下结果, 则表示配置成功
  1. * About to connect() to proxy 192.168.9.160 port 3128 (#0)
  2. *   Trying 192.168.9.160...
  3. * Connected to 192.168.9.160 (192.168.9.160) port 3128 (#0)
  4. * Establish HTTP proxy tunnel to twitter.com:443
  5. > CONNECT twitter.com:443 HTTP/1.1
  6. > Host: twitter.com:443
  7. > User-Agent: curl/7.29.0
  8. > Proxy-Connection: Keep-Alive
  9. >
  10. < HTTP/1.1 200 Connection Established
  11. < Proxy-agent: nginx
  12. <
  13. * Proxy replied OK to CONNECT request
  14. * Initializing NSS with certpath: sql:/etc/pki/nssdb
  15. *   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  16.   CApath: none
  17. * SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  18. * Server certificate:
  19. ...
  20. < HTTP/1.1 200 OK
  21. < Date: Wed, 13 Mar 2024 08:16:22 GMT
  22. ...
复制代码
来源:https://www.cnblogs.com/milton/p/18158635
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具