Nginx 配置ip_hash


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    #設置多個service 
    server_names_hash_bucket_size 64;
    
    #-------------Nginx配置ip_hash導致負載均衡算法失效解決方法---------start-----------------------------
    #真實服務器上一級代理的IP地址或者IP段,可以寫多行
    set_real_ip_from 127.0.0.1;
    #從哪個header頭檢索出要的IP地址
    real_ip_header X-Forwarded-For;
    # 遞歸排除IP地址,ip串從右到左開始排除set_real_ip_from里面出現的IP,如果出現了未出現這些ip段的IP,那么這個IP將被認為是用戶的IP
    real_ip_recursive on;
 
    #-------------Nginx配置ip_hash導致負載均衡算法失效解決方法---------end-----------------------------
    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"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    # 使用默認策略,輪詢
    upstream szsfs {
        # 下面介紹幾種負載均衡策略,其中輪詢、weight、ip_hash是nginx內置的,可以直接使用。fair和url_hash需要第三方支持才可以使用。
        # 1、輪詢(默認):每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
        server 192.168.255.10:18008;
        server 192.168.255.10:18009;
        # 2、weight:指定權重,按照權重進行請求的分配。wight和訪問比例成正比,適合后端服務器性能不均的情況。
        # 下面的配置就會經常訪問8288的服務。如果后端服務器8288 down掉,能夠立刻切換到8299或者8290。如果8288再次啟動,則又能回到原有的權重配置上。8288可以繼續提供服務。 
        # server 192.168.255.10:18008 weight=10;
        # server 192.168.255.10:18009 weight=1;
       
        # 3、ip_hash:每個請求按照ip的hash結果進行分配,這樣的話每個訪客固定請求一個后端服務器,可以解決session沒共享的問題。
        # 如果8288 down掉,則依然可以訪問,可能會緩存8289或者8290。如果8288啟動,則會從8289或8290切換到8288。
         ip_hash; 
        # server 192.168.255.10:18008;
        # server 192.168.255.10:18009;
       
        # 4、fair(第三方):后端服務器響應時間短的優先分配。
        # fair; 
        # server 192.168.255.10:18008;
        # server 192.168.255.10:18009;
       
        # 5、url_hash(第三方):按訪問的url的hash結果來分配請求,這樣相同url會分配到相同的后端服務器。適合后端服務器有緩存的情況。
        # hash $request_uri; 
        # hash_method crc32; 
        # server 192.168.255.10:18008;
        # server 192.168.255.10:18009;
    }
ll
    server {
        #生產服務器web出口服務器 192.168.255.10:20089 代理 App區 192.168.255.10:20089的配置內容 --->對外轉發操作
        listen       20089; 
        server_name  localhost;# 這里是服務器的IP或者域名
        charset utf-8;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            # root   html;
            proxy_connect_timeout 30;
            proxy_send_timeout 60;
            proxy_read_timeout 60;
            #-------------Nginx配置ip_hash導致負載均衡算法失效解決方法---------start-----------------------------
            #把原http請求的Header中的Host字段也放到轉發的請求里
            proxy_set_header Host $http_host;
            #記錄客戶端請求的真實IP
            proxy_set_header X-Real-IP $remote_addr;
            #用於記錄代理信息的,每經過一級代理(匿名代理除外),代理服務器都會把這次請求的來源IP追加在X-Forwarded-For中
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #報頭是用於識別協議(HTTP 或 HTTPS)
            proxy_set_header X-Forwarded-Proto $scheme;
            #客戶端瀏覽器的主機名
            proxy_set_header REMOTE-HOST $remote_host;
            #其他相關配置入下,可以根據需要添加配置
            #允許客戶端請求的最大單文件字節數
            #client_max_body_size 10m;
            #緩沖區代理緩沖用戶端請求的最大字節數
            #client_body_buffer_size 128k;
            #nginx跟后端服務器連接超時時間(代理連接超時)
            #proxy_connect_timeout 90;
            #后端服務器數據回傳時間(代理發送超時)
            #proxy_send_timeout 90;
            #連接成功后,后端服務器響應時間(代理接收超時)
            #proxy_read_timeout 90;
            #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小
            #proxy_buffer_size 4k;
            #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置
            #proxy_buffers 4 32k;
            #高負荷下緩沖大小(proxy_buffers*2)
            #proxy_busy_buffers_size 64k;
            #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
            #proxy_temp_file_write_size 64k;

            #-------------Nginx配置ip_hash導致負載均衡算法失效解決方法---------end-----------------------------
            #代理轉發
            proxy_pass http://szsfs/;
            #index  /pwplogin/toLoginPage.do   index.html index.htm;
        }
        
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504 404  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 192.168.255.10:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://192.168.255.10;
        #}

        # pass the PHP scripts to FastCGI server listening on 192.168.255.10:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   192.168.255.10:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    
    #生產服務器web出口服務器192.168.255.10:20088  短信服務 --->對App區 192.168.255.10:20089進行轉發操作
    server {
        listen       20088; 
        server_name  localhost;
        charset utf-8;
        location / {
            #root   html;
            # 配置外網App區應用  互聯網短信服務器地址信息
            proxy_pass https://qydx.53api.com;
            index  index.html index.htm;
        }
    }
    
    #生產服務器web出口服務器192.168.255.10:20087 微信對賬單 --->對App區 192.168.255.10:20089進行轉發操作
    server {
        listen       20087; 
        server_name  localhost;
        charset utf-8;
        location / {
            #root   html;
            # 配置外網App區應用 調用微信對賬單服務器地址信息
            proxy_pass https://api.weixin.qq.com;
            index  index.html index.htm;
        }
    }
   #生產服務器web出口服務器192.168.255.10:20086 token校驗碼 --->對App區進行轉發操作
    server {
        listen       20086; 
        server_name  localhost;
        charset utf-8;
        location / {
            #root   html;
            # 配置外網app調用 微信對賬單服務器地址的token校驗碼
            #proxy_pass https://wap.psbc.com;  #生產
            proxy_pass https://www.smeia.net;
            index  index.html index.htm;
        }
    }



    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM