nginx作為本地圖片伺服器及地址重寫
阿新 • • 發佈:2020-11-17
引言
這兩天寫專案碰到了使用nginx作為圖片伺服器及簡單的地址重寫
Nginx作為圖片伺服器
server { listen 80; server_name image.leyou.com; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { root D:\\apple\\images; } }
域名這裡使用的是本機解析的DNS
配置方式:域名在本機系統盤/Windows/System32/dirvers/etc下的hosts修改,可以配置本地靜態DNS服務
瀏覽器預設請求傳送埠為80
server_name的域名請求的連結,檔案資源路徑在本地的路徑下尋找
地址重寫
server { listen 80; server_name api.leyou.com; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location /api/upload { proxy_pass http://127.0.0.1:8092; proxy_connect_timeout 600; proxy_read_timeout 600; rewrite "^/api/(.*)$" /$1 break; } location / { proxy_pass http://127.0.0.1:10010; proxy_connect_timeout 600; proxy_read_timeout 600; } }
任何發往server_name域名的請求都會被下面兩個location過濾
(重要)順序:/api/upload/ ---> /
這裡的順序不能顛倒,先寫全域性的那麼有限制的將不起作用
專案中後端介面連結為/upload/xxx,所以需要將/api過濾掉,同時將後面的轉發至對應服務
rewrite [正則表示式] [真實連結替代位] [功能位]
(重要)程式碼中正則表示式指/api後面的所有部分(即 .*)被代指為$1,如果有多個(xxx)篩選條件,則$後面的數字還可以向後追加
$1 代指匹配正則中的(.*),即將/api後面的全部看作一個區塊,區塊名為$1,可以起到替代作用
break 是功能位中的一個
last #本條規則匹配完成後,繼續向下匹配新的location URI規則
break #本條規則匹配完成即終止,不再匹配後面的任何規則
redirect #返回302臨時重定向,瀏覽器地址會顯示跳轉後的URL地址
permanent #返回301永久重定向,瀏覽器位址列會顯示跳轉後的URL地址
異常
後端介面正常測試,前端URL爭取,但前端請求無法到達,服務沒有任何相應,一定要往跨域問題哪裡找答案,這裡涉及了跨域問題
參考:我的文章-> 深入淺出跨域問題
功能演示