V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ywgx
V2EX  ›  程序员

Nginx 四七层代理,解决纯内网业务机器,调用第三方资源以及代理办公网远程直连内网 RDS 日常开发调试等场景问题

  •  
  •   ywgx · 2018-06-27 09:17:12 +08:00 · 1891 次点击
    这是一个创建于 2129 天前的主题,其中的信息可能已经有所发展或是发生改变。

    详情原文 https://xabcloud.com/#/nginx

    部署

    这里规划 STREAM-172.17.129.1-sh 这台机器部署 OpenResty 做代理服务, 内网 IP 172.17.129.1 , 公网 IP 105.159.81.15 , 1M 公网带宽(带宽大小根据自己业务需求购买)

    # wget https://s.xabcloud.com/file/ctl.sh
    # chmod +x ctl.sh
    # ./ctl.sh OPENRESTY
    

    配置

    user nobody;
    worker_processes auto;
    worker_cpu_affinity auto;
    error_log logs/error.log;
    pid logs/nginx.pid;
    events{
            use epoll;
            worker_connections 65535;
    }
    stream{
            resolver 119.29.29.29 114.114.114.114;
            log_format proxy '[$status]  $session_time  $protocol  $upstream_addr  [$time_local]  $remote_addr';
            proxy_timeout 3200s;
            access_log logs/stream.log proxy;
    
            # 四层 HTTPS 访问代理
            server{
                    listen 172.17.129.1:443;
                    ssl_preread on;
                    proxy_pass $ssl_preread_server_name:443;
            }
            
            # 四层 Redis 负载均衡
            upstream redis {
                    server 172.17.129.225:6379;
                    server 172.17.129.226:6379;
                    server 172.17.129.227:6379;
            }
            server {
                    listen 172.17.129.1:6379;
                    proxy_pass redis;
            }
    
            # 四层代理测试环境 RDS,一般用来给开发人员本地办公网直连,方便日常测试
            server {
                    listen 105.159.81.15:3306;
                    proxy_pass xxx.mysql.rds.aliyuncs.com:3306;
                    #proxy_pass 172.17.129.226:3306;
            }
    }
    http{
            include mime.types;
            default_type text/html;
            server_tokens off;
            sendfile on;
            client_header_buffer_size 64k;
            client_max_body_size 1000m;
            gzip on;
            gzip_comp_level 3;
            gzip_buffers 4 16k;
            gzip_min_length 1024;
            gzip_types text/xml text/css application/javascript;
            proxy_read_timeout 3200;
            proxy_send_timeout 3200;
            proxy_buffers 30 32k;
            proxy_http_version 1.1;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            log_format main '[$status]  $request_time  $host$uri  [$http_user_agent]  [$time_local]  $remote_addr';
            access_log logs/access.log main;
    
            # 七层 HTTP 访问代理
            resolver 119.29.29.29 114.114.114.114;
            server{
                    listen 80;
                    location /{
                            proxy_set_header Host $host;
                            proxy_pass http://$host$request_uri;
                    }
            }
    }
    
    4 条回复    2018-06-27 15:08:04 +08:00
    Showfom
        1
    Showfom  
       2018-06-27 10:25:37 +08:00
    楼主你这脚本里的 Openresty 为啥要编译安装。。。。么看到有特殊的模块呀

    http://openresty.org/en/linux-packages.html

    直接用官方打包装不就行了- -
    ywgx
        2
    ywgx  
    OP
       2018-06-27 12:03:11 +08:00 via Android
    @Showfom 默认没开 stream 模块
    ywgx
        3
    ywgx  
    OP
       2018-06-27 12:08:29 +08:00 via Android
    另外不同的企业,有不同的部署规范路径,脚本里可以根据需要修改,这样比较通用灵活,另外很容易添加或者开通需要的模块,可以方便一些吧
    Showfom
        4
    Showfom  
       2018-06-27 15:08:04 +08:00
    @ywgx 哦好吧- - 我都是装 nginx-extras 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5200 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:30 · PVG 17:30 · LAX 02:30 · JFK 05:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.