0


Nginx第3篇-使用ngx_http_proxy_connect_module配置https正向代理

场景

我使用python爬虫,然后需要个代理,所以就用Nginx搭了一个代理服务器。对Nginx也不太熟,慢慢摸索,搭建完之后发现只能代理http的请求,无法穿透https。几经折腾和摸索发现一个强大的HTTP代理模块:ngx_http_proxy_connect_module

ngx_http_proxy_connect_module介绍

项目地址:https://github.com/chobits/ngx_http_proxy_connect_module
ngx_http_proxy_connect_module是Nginx的一个扩展模块,主要功能是在Nginx服务器上开启对CONNECT方法的支持。在HTTP协议中,CONNECT方法主要用于建立隧道,常见于WebSocket连接和HTTPS的中间人代理。通过该模块,你可以将Nginx作为HTTP/HTTPS代理服务器,甚至可以直接用作WebSocket服务器。

安装配置

选择对应的版本

在这里插入图片描述

安装

  1. $ wget http://nginx.org/download/nginx-1.9.2.tar.gz
  2. $ tar-xzvf nginx-1.9.2.tar.gz
  3. $ cd nginx-1.9.2/
  4. $ patch -p1< /path/to/ngx_http_proxy_connect_module/patch/proxy_connect.patch
  5. $ ./configure --add-module=/path/to/ngx_http_proxy_connect_module
  6. $ make&&makeinstall

配置

  1. server {
  2. listen 3128 ssl;
  3. # self signed certificate generated via openssl command
  4. ssl_certificate_key /path/to/server.key;
  5. ssl_certificate /path/to/server.crt;
  6. ssl_session_cache shared:SSL:1m;
  7. # dns resolver used by forward proxying
  8. resolver 8.8.8.8;
  9. # forward proxy for CONNECT request
  10. proxy_connect;
  11. proxy_connect_allow 443 563;
  12. proxy_connect_connect_timeout 10s;
  13. proxy_connect_data_timeout 10s;
  14. # defined by yourself for non-CONNECT request
  15. # Example: reverse proxy for non-CONNECT requests
  16. location / {
  17. proxy_pass http://$host;
  18. proxy_set_header Host $host;
  19. }
  20. }

实际案例:

  1. #正向代理
  2. server{
  3. resolver 114.114.114.114;
  4. resolver_timeout 30s;
  5. listen 843;
  6. proxy_connect; #启用 CONNECT HTTP方法
  7. proxy_connect_allow 443 563; #指定代理CONNECT方法可以连接的端口号或范围的列表
  8. proxy_connect_connect_timeout 20s; #定义客户端与代理服务器建立连接的超时时间
  9. proxy_connect_read_timeout 20s; #定义客户端从代理服务器读取响应的超时时间
  10. proxy_connect_send_timeout 20s; #设置客户端将请求传输到代理服务器的超时时间
  11. location / {
  12. proxy_pass http://$host;
  13. proxy_set_header Host $host;
  14. }}

效果

执行这个命令查看效果

  1. curl https://github.com/ -v-x127.0.0.1:3128

在这里插入图片描述

在python中使用

  1. default_proxy ={'http':'http://43.123.42.139:843','https':'http://43.123.42.139:843'}# 这样就可以使用了
  2. requests.get('https://www.baidu.com/', proxies=proxy)

参考文章:

推荐一个强大的HTTP代理模块:ngx_http_proxy_connect_module
深入理解ngx_http_proxy_connect_module模块

标签: http nginx https

本文转载自: https://blog.csdn.net/Kingsea442/article/details/137880085
版权归原作者 程序开发小黑 所有, 如有侵权,请联系我们删除。

“Nginx第3篇-使用ngx_http_proxy_connect_module配置https正向代理”的评论:

还没有评论