VUE項目非根路徑部署(nginx)

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的幾種匹配方式

            普通匹配

  1.             location = URI { configuration } #精確匹配
  2.             location ^~ URI { configuration } #非正則匹配
  3.             location [space] URI { configuration} # # 前綴匹配

            正則匹配

  1.             location ~ URI { configuration } #大小寫敏感匹配
  2.             location ~* URI { configuration } #大小寫不敏感匹配

            幾種匹配方式的優先級

             整體規則按照先普通匹配,然後再正則匹配,如果正則不匹配,則回退至上一個普通匹配。其中普通匹配沒有順序之                   分,哪個匹配最精確,就使用哪個location,正則匹配按照規則的書寫順序進行。

  1.               = 精確匹配,匹配後停止後續匹配,直接執行該匹配後的configuration.
  2.              [空格] 前綴匹配,匹配後,繼續更長前綴匹配和正則匹配。
  3.              ^~ 非正則匹配,匹配該規則後,停止繼續正則匹配。
  4.              ~ 區分大小寫的正則匹配,按順序匹配,一旦匹配上即停止後續匹配。
  5.              ~* 不區分大小寫的匹配,一旦匹配即停止後續匹配。

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後面配置的路徑丟棄掉,把當前匹配到的目錄指向到指定的目錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章