1、首先貼上nginx配置代碼
location ^~ /vue/ {
limit_except GET POST {deny all; }
proxy_set_header Host localhost;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:6255/;
}
location ^~ /abc/ {
limit_except GET POST {deny all; }
alias E:/Program/idea/gdzd_web_vue/dist/;
index index.html;
try_files $uri $uri/ /abc/index.html;
}
2、配置解釋
2.1 配置路徑: ^~ /vue/
作用:一般配置在開發環境中,直接反向代理node的服務(localhost:6255)。主要解決開發中存在跨域請求的問題,否則跨域請求在複雜請求的情況下會發送options請求。
location的幾種匹配方式
普通匹配:
- location = URI { configuration } #精確匹配
- location ^~ URI { configuration } #非正則匹配
- location [space] URI { configuration} # # 前綴匹配
正則匹配
- location ~ URI { configuration } #大小寫敏感匹配
- location ~* URI { configuration } #大小寫不敏感匹配
幾種匹配方式的優先級
整體規則按照先普通匹配,然後再正則匹配,如果正則不匹配,則回退至上一個普通匹配。其中普通匹配沒有順序之 分,哪個匹配最精確,就使用哪個location,正則匹配按照規則的書寫順序進行。
- = 精確匹配,匹配後停止後續匹配,直接執行該匹配後的configuration.
- [空格] 前綴匹配,匹配後,繼續更長前綴匹配和正則匹配。
- ^~ 非正則匹配,匹配該規則後,停止繼續正則匹配。
- ~ 區分大小寫的正則匹配,按順序匹配,一旦匹配上即停止後續匹配。
- ~* 不區分大小寫的匹配,一旦匹配即停止後續匹配。
2.1 配置路徑: ^~ /abc/
作用:生產中,使用文件部署的方式,並且解決非根路徑部署問題,選擇使用alias,而不是root,原因如下:
nginx指定文件路徑有兩種方式root和alias,指令的使用方法和作用域:
[root]
語法:root path
默認值:root html
配置段:http、server、location、if
[alias]
語法:alias path
配置段:location
root與alias主要區別在於nginx如何解釋location後面的uri,這會使兩者分別以不同的方式將請求映射到服務器文件上。
root的處理結果是:root路徑+location路徑
alias的處理結果是:使用alias路徑替換location路徑
alias是一個目錄別名的定義,root則是最上層目錄的定義。
alias在使用正則匹配時,必須捕捉要匹配的內容並在指定的內容處使用。
alias只能位於location塊中。root可以不放在location中
非常重要的區別是alias後面必須要用“/”結束,否則會找不到文件的(此處是坑)。。。而root則可有可無~~
root實例:
location ^~ /t/ {
root /www/root/html/;
}
如果一個請求的URI是/t/a.html時,web服務器將會返回服務器上的/www/root/html/t/a.html的文件。
alias實例:
location ^~ /t/ {
alias /www/root/html/new_t/;
}
如果一個請求的URI是/t/a.html時,web服務器將會返回服務器上的/www/root/html/new_t/a.html的文件。注意這裏是new_t,因爲alias會把location後面配置的路徑丟棄掉,把當前匹配到的目錄指向到指定的目錄。