nginx 實現多域名轉發到web服務不同路徑

項目背景

我們有個項目前端是用vue 寫的,node 起的web服務,中轉api到後臺接口。

但是項目下有多個平臺,可以理解成多個端,每個端都有自己的node web服務,綁定不同端口,如3001 3002 3003 3004 ...

這有個麻煩的就是部署,需要啓多個服務。

現在想把多個端合併在一起,起一個node web 服務。

端的區別用路徑。如a 端就是/a ,b端就是/b

這樣在開發時是可以使用的。麻煩的一點就是解決多個端session 的問題。

部署時需要www.x.com 訪問/

a.x.com 訪問 /a/

b.x.com 訪問/b/

這樣就需要用nginx 實現代理了。

但是又有一個問題,a.x.com 訪問的是/a/,導致靜態資源加載不了。

解決:

location ~ .*\.(jpg|gif|jpeg|bmp|png|ico|js|json)$ 
        { 
            access_log off;            
            root /mnt/csyl_web/public;
        #expires 定義用戶瀏覽器緩存的時間爲7天,如果靜態頁面不常更新,可以設置更長,這樣可以節省帶寬和緩解服務器的壓力
            expires      1d; 
        } 

測試時發現發起的api 請求訪問不到。

請求都是在根目錄,通過a.xx.com訪問的就是/a/get 了。

還需要想辦法解決,區分開來。

因爲是SPA 項目,只有一個頁面,請求/時node 返回頁面。其他的都是請求了。

location = / 時 訪問/a/

location /  時訪問/

以下是代碼

#----------------wwww
    server {
        listen       80;
        server_name  www.a.com;
   	location / {
            proxy_pass http://localhost:3010/;
        }
     }	
#----------------------------g
    server {
        listen       80;
        server_name  g.a.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location ~ .*\.(jpg|gif|jpeg|bmp|png|ico|js|json)$ 
        { 
            access_log off;            
            root /mnt/csyl_web/public;
        #expires 定義用戶瀏覽器緩存的時間爲7天,如果靜態頁面不常更新,可以設置更長,這樣可以節省帶寬和緩解服務器的壓力
            expires      1d; 
        } 


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

            proxy_http_version  1.1;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_read_timeout  120;
            proxy_set_header    Host $http_host;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    Upgrade $http_upgrade;
            proxy_set_header    Connection "upgrade";
            proxy_buffering off; #禁用緩存
            #proxy_pass          http://myapp;
            proxy_pass http://localhost:3010/webg/;
        }
        location / {
            proxy_pass http://localhost:3010/;
        }
    }



   #-----------------------------o
    server {
        listen       80;
        server_name  o.a.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

	    location ~ .*\.(jpg|gif|jpeg|bmp|png|ico|js|json)$ 
        { 
            access_log off;            
            root /mnt/csyl_web/public;
        #expires 定義用戶瀏覽器緩存的時間爲7天,如果靜態頁面不常更新,可以設置更長,這樣可以節省帶寬和緩解服務器的壓力
            expires      1d; 
        } 
        location = / {
            #root   html;
            #index  index.html index.htm;

            proxy_http_version  1.1;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_read_timeout  120;
            proxy_set_header    Host $http_host;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    Upgrade $http_upgrade;
            proxy_set_header    Connection "upgrade";
            proxy_buffering off; #禁用緩存
            #proxy_pass          http://myapp;
            proxy_pass http://localhost:3010/webo/;
        }


        location / {
            proxy_pass http://localhost:3010/;
            #index  index.html index.htm;
        }

        
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章