• NGINX 实现TCP反向代理


    • Nginx 从1.9.0开始发布ngx_stream_core_module模块,该模块支持tcp代理及负载均衡

    1. 查看NGINX 编译参数

    nginx -V
    
    • 如果编译参数中有--with-stream,说明nginx服务器已经满足要求
    • 如果没有,可以参考NGINX 平滑升级,对NGINX进行重新编译或升级

    2. 修改NGINX配置文件

    vim /usr/local/nginx/conf/nginx.conf
    
    stream 
    {
        upstream server_upstreams {
            server server1.bobobk.com:443;
            server server3.bobobk.com:443;
        }
        #将8080端口转发到server3.bobobk.com的443端口
        #将udp 8080端口转发到server3.bobobk.com 443端口
        server {
            listen 8080;
            listen 8080 udp;
            proxy_pass server_upstreams;
        }
    }
    
    • stream反向代理模块与http是同级,不要把配置写入了http里面
    • 配置文件中upstream server_upstreams 是用来负载均衡,会从不同服务器选择最佳服务器
    • proxy_pass表示转发请求到服务器

    3. 完整配置文件

    #/usr/local/nginx/conf/nginx.conf
    user  www www;
    
    worker_processes auto;
    worker_cpu_affinity auto;
    
    error_log  /home/wwwlogs/nginx_error.log  crit;
    
    pid        /usr/local/nginx/logs/nginx.pid;
    
    #Specifies the value for maximum file descriptors that can be opened by this process.
    worker_rlimit_nofile 51200;
    
    events
    {
        use epoll;
        worker_connections 51200;
        multi_accept off;
        accept_mutex off;
    }
    stream 
    {
        upstream server_upstreams {
            server server1.bobobk.com:443;
            server server3.bobobk.com:443;
        }
        #将8080端口转发到server3.bobobk.com的443端口
        #将udp 8080端口转发到server3.bobobk.com 443端口
        server {
            listen 8080;
            listen 8080 udp;
            proxy_pass server_upstreams;
        }
    }
    http
    {
        include       mime.types;
        default_type  application/octet-stream;
    
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;
    
        sendfile on;
        sendfile_max_chunk 512k;
        tcp_nopush on;
    
        keepalive_timeout 60;
    
        tcp_nodelay on;
    
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
    
        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6].";
    
        #limit_conn_zone $binary_remote_addr zone=perip:10m;
        ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
    
        server_tokens off;
    
        server
        {
            listen 80 default_server reuseport;
            listen [::]:80 default_server ipv6only=on;
            server_name _;
            index index.html index.htm index.php;
            root  /www/wwwroot/default;
    
            #error_page   404   /404.html;
    
            # Deny access to PHP files in specific directory
            #location ~ /(wp-content|uploads|wp-includes|images)/.*.php$ { deny all; }
    
            include enable-php.conf;
    
            location /nginx_status
            {
                stub_status on;
                access_log   off;
            }
    
            location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
            {
                expires      30d;
            }
            location ~ .*.(js|css)?$
            {
                expires      12h;
            }
    
            location ~ /.well-known {
                allow all;
            }
        }
    
        include vhost/*.conf;
    }
    

    4. 自动安装NGINX脚本

    wget https://raw.githubusercontent.com/helloxz/nginx-cdn/master/nginx.sh && bash nginx.sh
    source /etc/profile
    

    5. 参考

  • 相关阅读:
    SAP C4C OBN(Object Based Navigation)不能工作的原因分析
    使用SAP C4C自定义BO association创建动态下拉列表
    如何使用SAP HANA Studio的PlanViz分析CDS view性能问题
    如何使用jMeter测试SAP OData服务并发访问时的性能
    OData服务在SAP CRM,Cloud for Customer和S/4HANA上的实现比较
    SAP UI5和Vue的数据双向绑定实现原理比较
    在SAP WebClient UI里显示倒数计时的UI
    【年度重磅】2020华为云社区年度技术精选合集,700页+免费下载!
    面试必问:如何实现Redis分布式锁
    聊聊架构模式的变迁:从分层架构到微服务架构
  • 原文地址:https://www.cnblogs.com/yueyun00/p/12196151.html
Copyright © 2020-2023  润新知