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 versionenable REWRITE phasepatch
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

posted on   luokeli  阅读(11)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示