項目背景
我們有個項目前端是用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;
}
}