標籤:
最近做項目,前端需要用到nginx反向 Proxy來轉寄請求,總結了一下在Windows和Mac上的配置,以備查詢。
一、Windows
修改nginx的設定檔,nginx.conf。
1)nginx.conf檔案,http下,預設開啟的server只有一個,監聽的是80連接埠:
1 http{2 XXXXX3 server{4 listen 80;5 XXXX6 }7 }
2)我們手動添加一個server(虛擬機器),這樣本地使用假資料來類比請求json檔案時,不會因為跨域而請求不到。
1 http{ 2 XXXX 3 server{ 4 listen 80; 5 XXXX 6 } 7 server{ 8 # 連接埠,自己定義,注意不要重名 9 listen 8088;10 server_name localhost;11 # Path for static files 項目所在的檔案夾,指向編譯後的檔案夾12 # 我這裡指向的路徑是編譯後的檔案夾,實際指向你要運行html的檔案夾都可以13 root D:\BigCity\americanschool\frontend\output;14 #Specify a charset15 charset utf-8;16 # 開啟SSI17 ssi on;18 ssi_silent_errors off;19 # ssi針對所有檔案類型生效20 ssi_types *;21 22 #轉寄所有的json檔案的請求23 location ~(.*\.json){24 #我這裡json檔案放的目錄和工程目錄是同一個,所以root的地址和上面相同;另外,注意,如果用npm 來編譯源檔案,源檔案中的json可能不會產生到output檔案夾,需要手動拷貝,才能正常請求到;25 root D:\BigCity\americanschool\frontend\output;26 error_page 405 =200 $1;27 } 28 }29 }
3)當後端程式部署後,前端聯調時,需要把請求都轉到實際的後端,需要再次修改ngnix.conf如下:
1 server { 2 # 連接埠,自己定義,注意不要重名 3 listen 8088; 4 server_name localhost; 5 # Path for static files 項目所在的檔案夾,指向編譯後的檔案夾 6 # 我這裡指向的路徑是編譯後的檔案夾,實際指向你要運行html的檔案夾都可以 7 root D:\BigCity\americanschool\frontend\output; 8 #Specify a charset 9 charset utf-8;10 # 開啟SSI11 ssi on;12 ssi_silent_errors off;13 # ssi針對所有檔案類型生效14 ssi_types *;15 # error_log logs/km.error.log warn;16 #將/test/開頭的請求轉寄到後端伺服器17 #XXXX是你的後端伺服器的ip18 #對應前端js中的ajax的請求是:/rest/aaaaa/bbbbbb19 location ^~ /rest/ {20 proxy_pass http://XXXX/rest/;21 }}
這樣配置後,路徑D:\BigCity\americanschool\frontend\output下發起的ajax請求,只要是以/rest/開頭的,都會被轉寄到proxy_pass指向的地址,也就是把http://XXXX和ajax訪問的url拼接起來,得到:http://XXXX/rest/aaaaa/bbbbbb
二、MAC下的配置
MAC下,安裝好的nginx無法在文字編輯器中修改,只能在“終端”查看;並且沒有修改的許可權;因此,只能先把nignx.conf檔案拷貝出來,更改後,再拷貝回去,注意需要使用sudo。
[nginx]Windows和Mac下,nginx反向 Proxy伺服器配置