Nginx經驗總結

openkk 12年前發布 | 63K 次閱讀 Nginx Web服務器

1. post方法請求靜態文件

默認情況下,web服務器都不允許post方法請求靜態文件,會返回響應403 Not Allowed。但是有些時候確實有這種需求。可以通過配置文件來改變這種設置:在需要處理靜態文件的location里這樣配置即可,
    location /static/ {  
        root /path/to/files/;  
        error_page 405 =200 $uri;  
    }  

2. Nginx默認一次只能發送50個子請求(subrequest)

在nginx源碼中,src/http/ngx_http_request.h文件中:
    #define NGX_HTTP_MAX_SUBREQUESTS        50  

在使用Openresty時,可以向configure腳本傳參置這個限制, ./configure --with-cc-opt="-D NGX_HTTP_MAX_SUBREQUESTS=250"

3. Nginx location匹配規則

匹配順序:
a. 字符串匹配,和location塊的順序無關,根據uri匹配所有的location,從而得到一個匹配度最大的location。
b. 正則匹配,按照location塊的順序從前向后,如果找到匹配的location,則直接由該location處理請求。如果所有的location都不匹配,則由在字符串匹配中,匹配度最大的location處理。
匹配規則:
= /uri/   ——字符串精確匹配
^~ /uri/ ——字符串前綴匹配
~ /uri/   ——大小寫區分的正則匹配
~* /uri/ ——大小寫不區分的正則匹配
@ /uri/ ——命名location,只用于內部重定向請求
其中,如果=和^~匹配成功之后會立即停止搜索,即不再進行正則匹配。

4. 監控Nginx的狀態

需要HttpStubStatusModule模塊,默認情況是不開啟的,所以需要編譯時,指定開啟這個模塊。
 
./configure --with-http_stub_status_modules  
nginx的配置:
    location /nginx_status {  
      # copied from http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/  
      stub_status on;  
      access_log   off;  
      allow SOME.IP.ADD.RESS;  
      deny all;  
    }  

然后通過瀏覽器訪問localhost/nginx_status,瀏覽器顯示Nginx的狀態
    Active connections: 291  
    server accepts handled requests  
      16630948 16630948 31070465  
    Reading: 6 Writing: 179 Waiting: 106  

5. Nginx啟用aio

默認Nginx是沒有開啟aio的,需要在配置編譯時,加上相應選項否則啟動Nginx會報錯unknown directive “aio”。
./configure --with-file-aio  

     本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!