nginx 實際使用的範例

自己看的

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}

http {
    proxy_cache_path /tmp/lobby_cache levels=1:2 keys_zone=lobby_cache:128m max_size=10g inactive=3s; #秒數參考server 設定
    proxy_cache_path /tmp/web_cache levels=1:2 keys_zone=web_cache:128m max_size=10g inactive=300s; #秒數 看多久想更新一次
    include       mime.types;
    default_type  application/octet-stream;

    upstream backend_lobby {
        server 2b.jump32978.com max_fails=1 fail_timeout=1s weight=10;          #錯誤一次會進入休眠狀態10秒
        server 2b.jump32978.com max_fails=1 fail_timeout=1s weight=10;
    }

    upstream backend_bet {
        server 2b.jump32978.com max_fails=1 fail_timeout=1s weight=10;          #錯誤一次會進入休眠狀態10秒
        server 2b.jump32978.com max_fails=1 fail_timeout=1s weight=10;
    }

    upstream backend_web {
        server 2b.jump32978.com:80;          #錯誤一次會進入休眠狀態10秒
    }


    server {                                                #拿來cache 盤面
        listen       8081;
        #server_name  example.org  www.example.org;          #可以指定要服務什麼domain
        server_name  ngbet.hippoooo888.com;                           #全部服務...
        add_header 'Access-Control-Allow-Origin' '*';       #允許所有來源訪問
        add_header 'Access-Control-Allow-Methods' 'POST'; #允許所有方式訪問,可改成只有POST

        proxy_cache_lock on;                #確保同時只會發一個Request到後端
        proxy_cache_lock_age 300s;
        proxy_cache_lock_timeout 300s;
        
        location / {
            add_header Access-Control-Allow-Origin *;
            try_files $uri @backend;
        }

        location @backend {
            proxy_pass http://backend_lobby;
            proxy_set_header Host 2b.jump32978.com;
            proxy_set_header X-Real-IP $remote_addr;            #把IP送給反向代理的 server
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #把Protocol送給反向代理的 server
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;     #把Protocol送給反向代理的 server

            proxy_cache lobby_cache;
            proxy_buffering on;
            proxy_cache_methods POST;                       #這邊cache POST
            proxy_cache_key "$request_uri|$request_body";   #需要重新設定key
            proxy_buffers 8 64k;
            proxy_buffer_size 128k;
            proxy_cache_valid any 3s;                      #只保留 3s有效,要參考server 設定
            proxy_cache_min_uses 1;                         #至少一次訪問才開啟cache功能
            proxy_cache_use_stale updating;                 #還在更新時會勉強用舊的
            proxy_cache_background_update on;               #如果用了舊的,也會更新,下次用
            proxy_ignore_headers Cache-Control Set-Cookie;  #使用POST cache時需過濾掉這些
            add_header X-Cached-Edge $upstream_cache_status;
        }
    }

    server {                                                #拿來轉下注
        listen       8080;
        server_name  ngbet.hippoooo888.com;
        add_header 'Access-Control-Allow-Origin' '*';       #允許所有來源訪問
        add_header 'Access-Control-Allow-Methods' 'POST'; #允許所有方式訪問,可改成只有POST
        
        location / {
            add_header Access-Control-Allow-Origin *;
            try_files $uri @backend;
        }

        location @backend {
            proxy_pass http://backend_bet;
            proxy_set_header Host 2b.jump32978.com;
            proxy_set_header X-Real-IP $remote_addr;            #把IP送給反向代理的 server
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #把Protocol送給反向代理的 server
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;     #把Protocol送給反向代理的 server

            proxy_ignore_headers Cache-Control Set-Cookie;  #使用POST cache時需過濾掉這些
            add_header X-Cached-Edge $upstream_cache_status;
        }
    }

    server {                                                #拿來cache 靜態資料(GET)
        listen       80;
        server_name  ngbet.hippoooo888.com;
        add_header 'Access-Control-Allow-Origin' '*';       #允許所有來源訪問
        add_header 'Access-Control-Allow-Methods' 'GET,POST'; #允許所有方式訪問,可改成只有POST

        proxy_cache_lock on;                #確保同時只會發一個Request到後端
        proxy_cache_lock_age 300s;
        proxy_cache_lock_timeout 300s;
        
        location / {
            add_header Access-Control-Allow-Origin *;
            try_files $uri @backend;
        }

        location @backend {
            proxy_pass http://backend_web;
            #proxy_set_header Host $host;
            proxy_set_header Host 2b.jump32978.com;
            proxy_set_header X-Real-IP $remote_addr;            #把IP送給反向代理的 server
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #把Protocol送給反向代理的 server
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;     #把Protocol送給反向代理的 server

            proxy_cache web_cache;
            proxy_buffering on;
            proxy_cache_methods GET;                       #這邊cache POST
            proxy_cache_key "$request_uri|$request_body";   #需要重新設定key
            proxy_buffers 8 64k;
            proxy_buffer_size 128k;
            proxy_cache_valid any 300s;                      #保留 300s 有效
            proxy_cache_min_uses 1;                         #至少一次訪問才開啟cache功能
            proxy_cache_use_stale updating;                 #還在更新時會勉強用舊的
            proxy_cache_background_update on;               #如果用了舊的,也會更新,下次用
            proxy_ignore_headers Cache-Control Set-Cookie;  #使用POST cache時需過濾掉這些
            add_header X-Cached-Edge $upstream_cache_status;
        }
    }
}

修改的地方有

1. upstream 裡面要有 port
2. proxy_set_header Host 2b.jump32978.com; 要把 Host 加回來,才能讓後端機器 mis的設定能正常使用
3. 預計把三個 server 都改成 80 port 並綁多個 domain 來區分

2024/07/19 改成這樣,三個domain 版本

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}

http {
    proxy_cache_path /tmp/lobby_cache levels=1:2 keys_zone=lobby_cache:128m max_size=10g inactive=30s; #秒數參考server 設定
    proxy_cache_path /tmp/web_cache levels=1:2 keys_zone=web_cache:128m max_size=10g inactive=300s; #秒數 看多久想更新一次
    include       mime.types;
    default_type  application/octet-stream;

    upstream backend_lobby {
	server 103.90.13.233:80;
	#server 2b.jump32978.com:80;          #錯誤一次會進入休眠狀態10秒
        #server 2b.jump32978.com max_fails=1 fail_timeout=1s weight=10;
    }

    upstream backend_bet {
	server 103.90.13.233:80;
	#server 2b.jump32978.com:80;          #錯誤一次會進入休眠狀態10秒
        #server 2b.jump32978.com max_fails=1 fail_timeout=1s weight=10;
    }

    upstream backend_web {
	server 103.90.13.233:80;
	#server 2b.jump32978.com:80;          #錯誤一次會進入休眠狀態10秒
    }
    server {                                                #拿來cache 盤面
        listen       10080;
    
        location / {
            add_header Access-Control-Allow-Origin *;
        }
    }
    server {                                                #拿來cache 盤面
        listen       80;
        server_name  nglobby.hippoooo888.com;                           #全部服務...
        add_header 'Access-Control-Allow-Origin' '*';       #允許所有來源訪問
        add_header 'Access-Control-Allow-Methods' 'POST'; #允許所有方式訪問,可改成只有POST

        proxy_cache_lock on;                #確保同時只會發一個Request到後端
        proxy_cache_lock_age 300s;
        proxy_cache_lock_timeout 300s;
        
        location / {
            add_header Access-Control-Allow-Origin *;
            try_files $uri @backend;
        }

        location @backend {
            proxy_pass http://backend_lobby;
	    proxy_set_header Host 103.90.13.233;
	    #proxy_set_header Host 2b.jump32978.com;
            proxy_set_header X-Real-IP $remote_addr;            #把IP送給反向代理的 server
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #把Protocol送給反向代理的 server
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;     #把Protocol送給反向代理的 server

            proxy_cache lobby_cache;
            proxy_buffering on;
            proxy_cache_methods POST;                       #這邊cache POST
            proxy_cache_key "lobby_cache$request_uri|$request_body";   #需要重新設定key
            proxy_buffers 8 64k;
            proxy_buffer_size 128k;
            proxy_cache_valid any 30s;                      #只保留 3s有效,要參考server 設定
            proxy_cache_min_uses 1;                         #至少一次訪問才開啟cache功能
            proxy_cache_use_stale updating;                 #還在更新時會勉強用舊的
            proxy_cache_background_update on;               #如果用了舊的,也會更新,下次用
            proxy_ignore_headers Cache-Control Set-Cookie;  #使用POST cache時需過濾掉這些
            add_header X-Cached-Edge "LOBBY | $upstream_cache_status";
        }
    }

    server {                                                #拿來轉下注
        listen       80;
        server_name  ngbet.hippoooo888.com;
        add_header 'Access-Control-Allow-Origin' '*';       #允許所有來源訪問
        add_header 'Access-Control-Allow-Methods' 'POST'; #允許所有方式訪問,可改成只有POST
        
        location / {
            add_header Access-Control-Allow-Origin *;
            try_files $uri @backend;
        }

        location @backend {
            proxy_pass http://backend_bet;
	    proxy_set_header Host 103.90.13.233;
	    #proxy_set_header Host 2b.jump32978.com;
            proxy_set_header X-Real-IP $remote_addr;            #把IP送給反向代理的 server
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #把Protocol送給反向代理的 server
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;     #把Protocol送給反向代理的 server

            proxy_ignore_headers Cache-Control Set-Cookie;  #使用POST cache時需過濾掉這些
            add_header X-Cached-Edge "BET";
        }
    }

    server {                                                #拿來cache 靜態資料(GET)
        listen       80;
        server_name  ngweb.hippoooo888.com;
        add_header 'Access-Control-Allow-Origin' '*';       #允許所有來源訪問
        add_header 'Access-Control-Allow-Methods' 'GET,POST'; #允許所有方式訪問,可改成只有POST

        proxy_cache_lock on;                #確保同時只會發一個Request到後端
        proxy_cache_lock_age 300s;
        proxy_cache_lock_timeout 300s;
        
        location / {
            add_header Access-Control-Allow-Origin *;
            try_files $uri @backend;
        }

        location @backend {
            proxy_pass http://backend_web;
	    #proxy_set_header Host ngweb.hippoooo888.com;
	    proxy_set_header Host 103.90.13.233;
	    #proxy_set_header Host 2b.jump32978.com;
            proxy_set_header X-Real-IP $remote_addr;            #把IP送給反向代理的 server
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #把Protocol送給反向代理的 server
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;     #把Protocol送給反向代理的 server

            proxy_cache web_cache;
            proxy_buffering on;
            proxy_cache_methods GET HEAD POST;                       #這邊cache POST
            proxy_cache_key "web_cache$request_uri|$request_body";   #需要重新設定key
            proxy_buffers 8 64k;
            proxy_buffer_size 128k;
            proxy_cache_valid any 300s;                      #保留 300s 有效
            proxy_cache_min_uses 1;                         #至少一次訪問才開啟cache功能
            proxy_cache_use_stale updating;                 #還在更新時會勉強用舊的
            proxy_cache_background_update on;               #如果用了舊的,也會更新,下次用
            proxy_ignore_headers Cache-Control Set-Cookie;  #使用POST cache時需過濾掉這些
            add_header X-Cached-Edge "WEB | $upstream_cache_status";
        }
    }
}

目前測試可以使用了,但是發現會員端有蠻多功能需要即時反應的

  1. simon 說滾球5秒內,單式其實可以30秒,所以需要分開
  2. 分析一下有哪些功能可以cache 有哪些需要即時一點(1s ),或者不要cache

2024/08/21 備份BBO 在AWS 上使用的版本

[ba566@ip-172-31-3-26 ~]$ cat /usr/local/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}

http {
    proxy_cache_path /tmp/lobby_cache levels=1:2 keys_zone=lobby_cache:128m max_size=10g inactive=30s; #秒數參考server 設定
    proxy_cache_path /tmp/web_cache levels=1:2 keys_zone=web_cache:128m max_size=10g inactive=300s; #秒數 看多久想更新一次
    include       mime.types;
    default_type  application/octet-stream;

    upstream backend_lobby {
	server 103.90.13.233:80;
	#server 2b.jump32978.com:80;          #錯誤一次會進入休眠狀態10秒
        #server 2b.jump32978.com max_fails=1 fail_timeout=1s weight=10;
    }

    upstream backend_bet {
	server 103.90.13.233:80;
	#server 2b.jump32978.com:80;          #錯誤一次會進入休眠狀態10秒
        #server 2b.jump32978.com max_fails=1 fail_timeout=1s weight=10;
    }

    upstream backend_web {
	server 103.90.13.233:80;
	#server 2b.jump32978.com:80;          #錯誤一次會進入休眠狀態10秒
    }
    server {                                                #拿來cache 盤面
        listen       10080;
    
        location / {
            add_header Access-Control-Allow-Origin *;
        }
    }
    server {                                                #拿來cache 盤面
        listen       80;
        server_name  nglobby.hippoooo888.com;                           #全部服務...
        add_header 'Access-Control-Allow-Origin' '*';       #允許所有來源訪問
        add_header 'Access-Control-Allow-Methods' 'POST'; #允許所有方式訪問,可改成只有POST

        proxy_cache_lock on;                #確保同時只會發一個Request到後端
        proxy_cache_lock_age 300s;
        proxy_cache_lock_timeout 300s;
        
        location / {
            add_header Access-Control-Allow-Origin *;
            try_files $uri @backend;
        }

        location @backend {
            proxy_pass http://backend_lobby;
	    proxy_set_header Host 103.90.13.233;
	    #proxy_set_header Host 2b.jump32978.com;
            proxy_set_header X-Real-IP $remote_addr;            #把IP送給反向代理的 server
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #把Protocol送給反向代理的 server
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;     #把Protocol送給反向代理的 server

            proxy_cache lobby_cache;
            proxy_buffering on;
            proxy_cache_methods POST;                       #這邊cache POST
            proxy_cache_key "lobby_cache$request_uri|$request_body";   #需要重新設定key
            proxy_buffers 8 64k;
            proxy_buffer_size 128k;
            proxy_cache_valid any 30s;                      #只保留 3s有效,要參考server 設定
            proxy_cache_min_uses 1;                         #至少一次訪問才開啟cache功能
            proxy_cache_use_stale updating;                 #還在更新時會勉強用舊的
            proxy_cache_background_update on;               #如果用了舊的,也會更新,下次用
            proxy_ignore_headers Cache-Control Set-Cookie;  #使用POST cache時需過濾掉這些
            add_header X-Cached-Edge "LOBBY | $upstream_cache_status";
        }
    }

    server {                                                #拿來轉下注
        listen       80;
        server_name  ngbet.hippoooo888.com;
        add_header 'Access-Control-Allow-Origin' '*';       #允許所有來源訪問
        add_header 'Access-Control-Allow-Methods' 'POST'; #允許所有方式訪問,可改成只有POST
        
        location / {
            add_header Access-Control-Allow-Origin *;
            try_files $uri @backend;
        }

        location @backend {
            proxy_pass http://backend_bet;
	    proxy_set_header Host 103.90.13.233;
	    #proxy_set_header Host 2b.jump32978.com;
            proxy_set_header X-Real-IP $remote_addr;            #把IP送給反向代理的 server
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #把Protocol送給反向代理的 server
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;     #把Protocol送給反向代理的 server

            proxy_ignore_headers Cache-Control Set-Cookie;  #使用POST cache時需過濾掉這些
            add_header X-Cached-Edge "BET";
        }
    }

    server {                                                #拿來cache 靜態資料(GET)
        listen       80;
        server_name  ngweb.hippoooo888.com;
        add_header 'Access-Control-Allow-Origin' '*';       #允許所有來源訪問
        add_header 'Access-Control-Allow-Methods' 'GET,POST'; #允許所有方式訪問,可改成只有POST

        proxy_cache_lock on;                #確保同時只會發一個Request到後端
        proxy_cache_lock_age 300s;
        proxy_cache_lock_timeout 300s;
        
        location / {
            add_header Access-Control-Allow-Origin *;
            try_files $uri @backend;
        }

        location @backend {
            proxy_pass http://backend_web;
	    #proxy_set_header Host ngweb.hippoooo888.com;
	    proxy_set_header Host 103.90.13.233;
	    #proxy_set_header Host 2b.jump32978.com;
            proxy_set_header X-Real-IP $remote_addr;            #把IP送給反向代理的 server
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #把Protocol送給反向代理的 server
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;     #把Protocol送給反向代理的 server

            proxy_cache web_cache;
            proxy_buffering on;
            proxy_cache_methods GET HEAD POST;                       #這邊cache POST
            proxy_cache_key "web_cache$request_uri|$request_body";   #需要重新設定key
            proxy_buffers 8 64k;
            proxy_buffer_size 128k;
            proxy_cache_valid any 300s;                      #保留 300s 有效
            proxy_cache_min_uses 1;                         #至少一次訪問才開啟cache功能
            proxy_cache_use_stale updating;                 #還在更新時會勉強用舊的
            proxy_cache_background_update on;               #如果用了舊的,也會更新,下次用
            proxy_ignore_headers Cache-Control Set-Cookie;  #使用POST cache時需過濾掉這些
            add_header X-Cached-Edge "WEB | $upstream_cache_status";
        }
    }
}

配套BBO測試機修改檔案

發佈留言