nginx路由文件配置


nginx中文文檔

Nginx 的請求處理有多個階段,比如說rewrite、access、content等等,不同的配置字段屬於不同的配置階段,不同階段的先后執行順序不一樣,例如rewrite在content階段前面,就算你content階段的內容在前面,也一樣是rewrite先生效。

其中content階段(根據URI查找內容)主要有index、autoindex、static三個先后次序。

匹配特性

貪婪原則

盡可能長的匹配路由。例如下面的配置,當訪問路徑/images/時,其實也會匹配到第一條規則,所以,長路徑優先匹配。

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

代理配置

簡單的代理案例如下:

server {
    listen 8080;//默認端口80
    root /data/upl;//所有路徑導入到/data/upl下
    
    //proxy_pass字段用於表示代理
    location / {
        proxy_pass http://localhost:8080;
    }
    //~用於通配
    location ~ \.(gif|jpg|png)$ {
    root /data/images;
}
}

同時可以設置FastCGI代理,主要配置參數有fastcgi_pass,fastcgi_param等。

更多具體的代理配置參考文檔Module ngx_http_proxy_module

常用字段解析

  • ssi:服務器端嵌入,默認配置為off,當配置為on的時候,服務器在將html發送到瀏覽器之前會先解析,然后將文件中的ssi指令解析,解析執行后的html會發送給瀏覽器(常見的主要有include文件等等)。

  • aliasrootroot匹配是在制定目錄地址下匹配,匹配結果為path/uri,alias是在會用制定內容替換掉匹配的路徑。例如下例:

location ~ ^/weblogs/ {
    root /data/weblogs/abc;
}
location ~^/test/ {
    alias /data/static/
}

當請求的URI是/weblogs/index/a.html時,那么實際定位到的地址是/data/weblogs/abc/weblogs/index/a.html;
當請求的URI是/test/ddd/a.html時,那么實際定位的地址是/data/static/ddd/a.html

Notice:

  • 使用alias時,目錄名后面一定要加"/"。
  • alias可以指定任何名稱。
  • alias在使用正則匹配時,必須捕捉要匹配的內容並在指定的內容處使用。
  • alias只能位於location塊中。
  • index: 該指令通常用於指定首頁文件,當在匹配location下找到index指定的文件時,會進行內部rewrite跳轉,然后根據跳轉后的新地址進行匹配location,否則放棄處理,交給下一階段模塊處理。
    例如:
    location / {
        root /var/www/;
        index index.html;
    }
 
    location /index.html {
        set $a 32;
        echo "a = $a";
    }

假設求情的URI為/,首先根據location,index配置生效,然后rewrite地址為/index.html,接着根據location配置,貪婪原則,首先匹配到/index.html然后輸出a = 32

參考文獻

  1. nginx中文文檔
  2. Module ngx_http_proxy_module
  3. Nginx配置指令的執行順序(七)


免責聲明!

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



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