1. 程式人生 > 實用技巧 >nginx做動靜分離,使用prox_pass時訪問首頁報錯:Whitelabel Error Page

nginx做動靜分離,使用prox_pass時訪問首頁報錯:Whitelabel Error Page

參照一些教程和部落格的做動靜分離配置,靜態檔案位於opt/static目錄下,後端部分由springboot打包部署tomcat。

問題配置如下(server部分):

 1        listen       80;
 2        server_name  49.235.14.*;
 3        root   /opt/static;
4 index page/index.html; 5 location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
6 { 7      expires 30d; 8 } 9 #靜態檔案交給nginx處理 10 location ~ .*\.(js|css)?$ 11 { 12      expires 1h; 13 } 14 15 location / { 16 proxy_set_header X-Real-IP $remote_addr; 17 # 請求頭中Host資訊
18 proxy_set_header Host $host; 19 # 代理路由資訊 20 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 21 # 真實的使用者訪問協議 22 proxy_set_header X-Forwarded-Proto $scheme; 23 proxy_pass http://127.0.0.1:8080; 24 }

此時直接訪問ip地址報錯:

若換成直接訪問: ip/root路徑/index路徑檔案 。又可以訪問到首頁!

這表明index.html並沒有被location中的靜態配置規則匹配,而是進入了location / 匹配,請求給了代理 proxy_pass 127.0.0.1:8080,訪問了後端部分。

於是修改配置,增加location = / {}

此配置只對站點根目錄進行精確匹配,匹配後不在搜尋匹配其他location正則;

改為規則如下:

 1    listen       80;
 2     server_name  49.235.14.*;
 3     root   /opt/static;
 4     location = / {
 5          index page/index.html ;
 6     }
 7      #靜態檔案交給nginx處理
 8      location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
 9      {    
10         expires 30d;
11      }
13 location ~ .*\.(js|css)?$ 14 { 15 expires 1h; 16 } 17 18 location / { 19 proxy_set_header X-Real-IP $remote_addr; 20 # 請求頭中Host資訊 21 proxy_set_header Host $host; 22 # 代理路由資訊 23 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 24 # 真實的使用者訪問協議 25 proxy_set_header X-Forwarded-Proto $scheme; 26 proxy_pass http://127.0.0.1:8080; 27    } 28 29

再次訪問成功,後臺也打印出相應日誌,實現前後端分離。