nginx作為本地圖片服務器及地址重寫


引言

這兩天寫項目碰到了使用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爭取,但前端請求無法到達,服務沒有任何相應,一定要往跨域問題哪里找答案,這里涉及了跨域問題
參考:我的文章-> 深入淺出跨域問題

功能演示



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM