Nginx 正向代理
get code
# 下载源代码 git clone http://github.com/momommm/nginx-forward-proxy.git cd nginx-forward-proxy ls Dockerfile entrypoint.sh nginx.conf ngx_http_proxy_connect_module-0.0.2.tar.gz README.md
cat Dockerfile
FROM alpine:3.13 MAINTAINER "guozhipeng guozhipeng@mu77.com" COPY ngx_http_proxy_connect_module-0.0.2.tar.gz /tmp/ COPY entrypoint.sh /entrypoint.sh COPY nginx.conf /templates/ RUN cd /tmp/ \ && wget http://nginx.org/download/nginx-1.19.6.tar.gz \ && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ && apk add patch gcc g++ pcre-dev zlib-dev make\ && tar zxf ngx_http_proxy_connect_module-0.0.2.tar.gz \ && tar zxf nginx-1.19.6.tar.gz \ && cd nginx-1.19.6 \ && patch -p1 < /tmp/ngx_http_proxy_connect_module-0.0.2/patch/proxy_connect_rewrite_1018.patch \ && ./configure --add-module=/tmp/ngx_http_proxy_connect_module-0.0.2/ \ && make && make install \ && rm -rf /tmp/* \ && mkdir /var/log/nginx/ ENTRYPOINT ["/bin/sh", "/entrypoint.sh"]
cat entrypoint.sh
#!/bin/bash set -e if [[ -z $DNS ]] && [[ -z $PORT ]]; then echo "Please set parameter value that DNS and PORT." exit -1 fi cat /templates/nginx.conf | sed 's/##PORT##/'"$PORT"'/g' | sed 's/##DNS##/'"$DNS"'/g' > /usr/local/nginx/conf/nginx.conf exec /usr/local/nginx/sbin/nginx -g 'daemon off;'
cat nginx.conf
user nobody; worker_processes 2; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; tcp_nopush on; access_log /var/log/nginx/http_proxy.access.log main; error_log /var/log/nginx/http_proxy.error.log; keepalive_timeout 65; #gzip on; server { resolver ##DNS## valid=60s ipv6=off; listen ##PORT##; proxy_connect; proxy_connect_allow 443 563; proxy_connect_connect_timeout 10s; proxy_connect_read_timeout 10s; proxy_connect_send_timeout 10s; location / { proxy_pass $scheme://$http_host$request_uri; } } }
编译成镜像
docker build -t nginx-forward-proxy-module002-alpine313:1.19.0 ./
运行正向代理
docker run -itd \ -e DNS=114.114.114.114 \ -e PORT=333 \ --net host \ -v /data/nginx/forward-proxy/logs:/var/log/nginx/ \ --name nginx-forward-proxy \ --hostname nginx-forward-proxy \ nginx-forward-proxy-module002-alpine313:1.19.0
客户端使用代理
1 ping 客户端是否能和正向代理服务器通讯 2 ping 正向代理是否能访问外网 3 客户端浏览器配置代理 添加IP和端口:代理容器的宿主机 ip 和333 端口 4 linux命令测试 curl -x ip:333 https://www.baidu.com curl -x ip:333 https://www.google.com
正向代理https模块与nginx版本对应关系
nginx version | enable REWRITE phase | patch |
---|---|---|
1.4.x ~ 1.12.x | NO | proxy_connect.patch |
1.4.x ~ 1.12.x | YES | proxy_connect_rewrite.patch |
1.13.x ~ 1.14.x | NO | proxy_connect_1014.patch |
1.13.x ~ 1.14.x | YES | proxy_connect_rewrite_1014.patch |
1.15.2 | YES | proxy_connect_rewrite_1015.patch |
1.15.4 ~ 1.16.x | YES | proxy_connect_rewrite_101504.patch |
1.17.x ~ 1.18.0 | YES | proxy_connect_rewrite_1018.patch |
1.19.x ~ 1.21.0 | YES | proxy_connect_rewrite_1018.patch |
1.21.1 ~ 1.22.0 | YES | proxy_connect_rewrite_102101.patch |
本文来自博客园,站在巨人的肩膀上,坚持开源精神,遵循开源协议:Apache Licene 2.0协议。
分类:
05 代理负载高可用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!