首頁  >  文章  >  後端開發  >  Nginx 常見應用技術指南[Nginx Tips] 第二版

Nginx 常見應用技術指南[Nginx Tips] 第二版

WBOY
WBOY原創
2016-07-30 13:29:321310瀏覽
作者:NetSeek  http://www.linuxtone.org (IT運維專家網|群集架構|性能調優)
歡迎轉載,轉載時請務必以超連結形式標明文章及本聲明.
首發時間: 2008-11-25     更新時間:2009-1-14
目錄
二、        Nginx 安裝及除錯
三、        Nginx Rewrite
四、        Nginx 自動六、        Nginx Location
七、        Nginx expires
七、        Nginx expires七、        Nginx expires 八、        Nginx 防盜鏈
九、        Nginx 存取控制🜠
十一、     Nginx Cache
十二、     
Nginx負載平衡
十三、 
  Nginx簡單最佳化       
十四、        如何建構高效能的LEMP環境 十六、        常見問題與錯誤處理.
十七、        相關資源下載【前言】:編寫此技術指南在於推廣普及NGINX在國內的使用,更方便的幫助了解大家並掌握NGINX的一些使用技巧。本指南很多技巧 巧來自於網路和工作中或網路上朋友們問我的問題.在此對網路上願意分享的朋友們表示感謝和致意!歡迎大家和我一起豐富本技術指南提出更好的建議!請朋友們 關注: http://www.linuxtone.org 技術分享社區! 互想學習共同進步!
一、 Nginx 基礎知識1、簡介
   Nginx ("engine x") 是高效能的HTTP 和反向代理伺服器,也是一個高效能/POP3/ITP伺服器. Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 網站開發的,它已經在該網站上運行超過兩年半了。 Igor 將原始碼以類BSD許可證的形式發布。儘管還是測試版,但是,Nginx 已經因為它的穩定性、豐富的功能集、範例設定檔和低系統資源的消耗而聞名了。 更多的請見官方wiki: 
http://wiki.codemongers.com/2、 Nginx的優點
nginx做為HTTP伺服器,有以下幾種基本特性:nginx做為HTTP伺服器,有以下幾種基本特性:
1)處理靜態文件,索引文件以及自動索引;開啟文件描述符緩衝.
2)        無快取的反向代理加速,單純的負載平衡與容錯.
3)        FastCGI,簡單的負載平衡與容錯.
4)        模組化的結構。包括gzipping, byte ranges, chunked responses, 以及 SSI-filter等filter。如果由FastCGI或其它代理伺服器處理單頁中存在的多個SSI,則這項處理可以並行運行,而不需要互相等待。
5)        支援SSL 與 TLS SNI

Nginx專為性能優化而開發,性能是其最重要的考慮, 實現上非常注重效率 。它支援核心Poll模型,能經受高負載的考驗, 有報告表明能支援高達 50,000 個並發連接數。
Nginx具有很高的穩定性。其它HTTP伺服器,當遇到存取的峰值,或有人惡意發起慢速連線時,也很可能會導致伺服器實體記憶體耗盡頻繁交換,失去響 應,只能重啟伺服器。例如目前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx採取了分階段資源分配技術,使得它的 CPU與記憶體佔用率非常低。 nginx官方表示保持10,000個沒有活動的連接,它只佔2.5M內存,所以類似DOS這樣的攻擊對nginx來說基本上 是毫無用處的。就穩定性而言, nginx比lighthttpd更勝一籌。
Nginx支援熱部署。它的啟動特別容易, 並且幾乎可以做到7*24不間斷運行,即使運行數月也不需要重新啟動。你也能夠在不間斷服務的情況下,對軟體版本進行升級。
Nginx採用master-slave模型, 能夠充分利用SMP的優勢,且能夠減少工作進程在磁碟I/O的阻塞延遲。當採用select()/poll()呼叫時,也可以限制每個行程的連線數。
Nginx程式碼品質非常高,程式碼很規範, 手法成熟, 模組擴充也很容易。特別值得一提的是強大的Upstream與Filter鏈。 Upstream為諸如reverse proxy, 與其他伺服器通訊模組的編寫奠定了很好的基礎。而Filter鏈最酷的部分就是各個filter不必等待前一個filter執行完畢。它可以把前一個 filter的輸出做成目前filter的輸入,有點像Unix的管線。這意味著,一個模組可以開始壓縮從後端伺服器發送過來的請求,並且可以在模組接收 完後端伺服器的整個請求之前把壓縮流轉向客戶端。
Nginx採用了一些os提供的最新特性如對sendfile (Linux 2.2+),accept-filter (FreeBSD 4.1+),TCP_DEFER_ACCEPT (Linux 2.4+) 的支持,從而大大提高了 Ngin安裝與調試
1、Pcre 安裝
CODE:./configure

  make && make install

  cd ../ /configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-openssl=/usr/local/openssl make && make install<br><br>更詳細的模組客製化與安裝請參考官方wiki. 3、Nginx 設定檔測試:

# /usr/local/nginx/sbin/nginx -t  //Debug 設定檔的關鍵指令需要重點撐握.2008/12/16 09:08:35 [info] 28412#0: the configuration file / usr/local/nginx/conf/nginx.conf syntax is ok <br>2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/ngullyx.conf was test/ng 3、Nginx 啟動:
CODE:# /usr/local/nginx/sbin/nginx

4、Nginx 設定檔修改重新載入:<br>CODE:<br># kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

三、Nginx Rewrite flags)

last - 基本上都用這個Flag。

※相當於Apache裡的[L]標記,表示完成rewrite,不再匹配後面的規則

break - 中止Rewirte,不再繼續匹配一個返回定向的HTTP狀態302
permanent - 返回永久重定向的HTTP狀態301
    ,其中:
    * ~         為區分大小寫配對    * ~*      為不區分大小寫符合與不同大小而寫大小為不符大小與大小為不匹配為不同。
3. 文件及目錄匹配,其中:  
 * -f和!-f用來判斷是否有文件    * -d和!-e用來判斷是否存在檔案或目錄
    * -x和!-x用來判斷檔案是否可執行
3.  Nginx 的一些可用的全域變數,可用做條件判斷:CODE :
$args$content_length
$content_type$document_root$document_uri
$host$http_user_agent$http_cookiefod$g; $remote_port
$remote_user$request_filename$request_uri
$query_string$scheme$server_protocol$server_addr$server_name
$server_port$uri
四、 Nginx Redirecteek //www.linuxtone.org CODE:
server{
listen 80;server_name linuxtone.org netseek.linuxtone.org;index index.html index.php;

root /data/www/www/www.! www.linxtone.org$") {

rewrite ^(.*) http://www.linuxtone.org$1 redirect;}
................... .....
}

五、 Nginx 目錄自動加斜線:
<br>CODE:<br>if (-d $request_filename){
           rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanentcation
  基本語法:[與上面rewrite正規匹配語法大致一致]
location [=|~|~*|^~] /uri/ { … }
    
* ~ 
    * ~     * ~* 為不區分大小寫匹配
    * !~和!~*分別為區分大小寫不匹配及不區分大小示例/





{
# matches the query / only.
# 只符合/ 查詢。
}
符合任何查詢,因為所有請求都已 / 開頭。但正規表示式規則和長的區塊規則將被優先和查詢來匹配
範例2:
location ^~ /images/ {
# matches any query beginning with //y骨
# matches any query beginning with //imaing and ts search # so regular expressions will not be checked.# 匹配任何已/images/ 開頭的任何查詢並且停止搜尋。任何正規表示式都不會被測試。
範例3:
location ~* .(gif|jpg|jpeg)$ {
# matches any request ending in , le requests to the /images/ directory will be handled by 
}

# 符合任何已gif、jpg 或jpeg 結尾的請求。

七、 Nginx expires


1.依檔案型別expires
<br>CODE:<br>
# Add expires header for static content
location ~* .(js|css|jpg|jpeg|gif|png|swf)$ {
  jpg|jpeg|gif|pngname    if (root-frequest_|pngname) $ /data/www/wwwroot/bbs;
       expires      1d;       break;    }

}

:serv. cation ~ ^/(images|javascript|js |css|flash|media|static)/  {root    /data/www/wwwroot/down;<br>        expires 30d;<br>   針對不同的文件類型<br><br>CODE: #Preventing hot linking of images and other file typeslocation ~* ^.+.(gif|jpg|png|swf|flv|rar|zip)$ {
        valid_referers none blocked server_names *.linuxtone.org linuxid_referers none blocked server_names *.linuxtone.org linuxtone.org http://localhostAai ($invalid_referer) {      rewrite   ^/   ;     # return   403;

    :

location /img/ {<br>    root /data/www/wwwroot/bbs/img /;<br>    valid_referers none blocked server_names *.linuxtone.org http://localhost baidu.com;<br>    if ($invalid_referer) {                   #return   403;<br>    }<br>}<br><br>3.       同實現防盜鏈和expires的方法CODE:

#Preventing hot linking of images and other file types

location ~* ^.+.(gif|jpg|png|swf|flv|rar|zip)$ {        valid_referers none blocked server_names *.linuxtone.org linuxtone.org http://localhost; ) {<br>      rewrite   ^/   ;<br>                     }<br>)  ires 1d;<br>     break;<br>}<br><br>九、 Nginx 存取控制1.        Nginx 身分證驗證

CODE:<code>#cd /usr/local/nginx/conf<br>#mkdir htpasswd<br>/usr/local/apache2/bin/htpasswd -c /usr/local/nginx/conf/htpasswd/tongji linuxtone password:   (此處輸入你的密碼)<br>Re-type new password:   (再輸入你的密碼)<br>Adding password for user<br>http://count.linuxtone.org/tongji/data/index.html(目錄存在/data/www/wwwroot/tongji/data/目錄下)<br>將下段配置放到虛擬主機目錄,當訪問http://count.linuxtone/tongji/即提示要密驗證:<br>location ~ ^/(tongji) /  {<br>                root    /data/www/wwwroot/count;<br>            "LT-COUNT-TongJi";<br>                        auth_basic_user_file  }<br><br>2.        Nginx 禁止存取某類型的文件.<br>如,Nginx下禁止訪問*.txt文件,配置方法如下.
CODE:location ~* .(txt|doc)$ {

   if (-f $request_filename) {

   root /data /www/wwwroot/linuxtone/test;   #rewrite …..可以重新導向到某個URL<br>   break;<br>   }<br>}<br><br>方法2:2:2:8:8:8:8:8:8:82:82:2:2:8:8:2:8:8:82:2:8:2:2:8:8:82:2:8:8:2:2:8:8:2:8:2:8:2:8:2:8:8:8:8:82) {<br>        root /data/www/wwwroot/linuxtone/test;        deny all;}

實例

/23:00775725725:0002:002:  deny all; <br>}  <br><br>3.        使用ngx_http_access_module限制ip存取CODE:
192.168.1.0/24;    allow   10.1.1.0/16;    deny    all;

}

詳細參考wiki: <br>http://wiki.codemongers.com/NginxHttpAccessModule#allow<br>4.        Nginx 下載限制並發與速率:CODESmam

CO  10m;

server       {<br>               listen       80 ;<br>               server_name  down.linuxotne.org;<br>             /data/www/wwwroot/down;<br>               #Zone limit<br>               linuxtone  1;                   limit_rate  20k; }..........
       }只允許客房端一個執行緒,每個執行緒20k.

【註】

limit_zone  linuxtone  這可以定義在主的


5.        Nginx 實作Apache一樣目錄清單
<br>CODE:<br>
location  /  {🠎 

location  /  上檔檔案大小限制

主設定檔裡加入如下,具體大小根據你自己的業務做調整。
client_max_body_size 10m;                                      
十、        Nginx 日誌處理

1.Nginx 日誌切割

<br>#contab -e<br> 59 23#con
[root@count ~]# cat /usr/local/sbin/logcron.shCODE:
#!/bin/bash<br>log_dir="/data/logs"<br>time=`date +%Y%m%d`  <br>/bin/mv  ${log_dir}/access_linuxtone.org.log ${log_dir}/access_count .linuxtone.org.$time.log<br>kill -USR1 `cat  /var/run/nginx.pid`更多的日誌分析與處理就關注(同時歡迎你參加討論):http://bbs. linuxtone.org/forum-8-1.html
2.利用AWSTATS分析NGINX日誌
  設定好Nginx日誌格式,仍後利用awstats進行分析.
請參考: .org/thread-56-1-1.html
3.        Nginx 如何不記錄部分日誌
日誌太多,每天好幾個G,少記錄一些,下面的設定寫到server{}段中就可以了
location ~ .*.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$
{
 Cache服務設定
如果需要將檔案快取到本機,則需要增加以下幾個子參數:CODE:
proxy_store on;proxy_store_access proxy其中,
proxy_store on用來啟用快取到本地的功能,

proxy_temp_path用來指定快取在哪個目錄下,如:proxy_temp_path html;<br><br>在經過上一步之後,雖然檔案被快取到磁碟上,但每次請求仍會向遠端拉取文件,為了避免去遠端拉取文件,必須修改CODE:
proxy_pass:if ( !-e $request_filename) {
    proxy_pass  http:/pass  /mysvr;}
即改成有條件地去執行proxy_pass,這個條件就是當請求的檔案在本地的proxy_temp_path指定的目錄下不存在時,再向後端拉取。

   

<br>更多更高的應用可以研究ncache,詳細請參考<br>http://bbs.linuxtone.org<br> 裡ncache相關的貼合http://bbs.linuxtone.org 裡ncache相關的貼片. . Nginx 負載平衡基礎
nginx的upstream目前支援4種方式的分配
1)、輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後後端伺服器down掉,能自動剔除。
2)、weight
指定輪詢幾率,weight和存取比率成正比,用於後端伺服器效能不均的情況。
2)、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題。
3)、fair(第三方)
按後端伺服器的回應時間來分配請求,回應時間短的優先分配。
4)、url_hash(第三方)
2.        Nginx 負載平衡實例1CODE:
upstream bbs.linuxtone.CODELL. : 9090 down;
    server 127.0.0.1:8080 weight=2;    server 127.0.0.1:6060;    server 127.0.0.1:6060;
    server 127.0.0.1:7050;    server 127.0.0.1:707.0.
proxy_pass http ://bbs.linuxtone.org/;

每個設備的狀態設定為:<br><br><br>a)        down 表示單前的server ,負載的權重就越大。 <br><br>c)        max_fails :允許請求失敗的次數預設為1.超過最大次數時,返回proxy_next_upstream 模組定義的錯誤
d): e)        backup: 其它所有的非backup機器down或忙碌的時候,請求backup機器。所以這台機器壓力會最輕。
nginx支援同時設定多組的負載平衡,用來給不用的server來使用。
client_body_in_file_only 設定為On 可以講client post過來的資料記錄到檔案中用來做debug
client_body_temp_path 設定對記錄檔的目錄可以設定最多3層目錄
或進行新的代理負載平衡
3.        Nginx 負載平衡實例2
按存取url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為快取時比較有效,也可以用作提高Squid快取命中率.
簡單的負載均等實例:
#vi nginx.conf  //nginx主設定檔核心設定
CODE:……….<br>#loadblance my.linuxtone.org<br>       上游  my.linuxtone.org  {<br>       ip_hash;  伺服器  192.168.169.136:8080 ;<br>       伺服器 219.101.75.138:8080;<br>       伺服器192.168.169.117;<br>       伺服器   192.168.169.118;<br>       伺服器   192.168.169.11995;        vhosts/linuxtone_lb.conf; <br>………<br># vi proxy.conf<br>proxy_redirect off;<br>proxy_set_header 主機$host;<br>proxy_set_header X-真實IP $remote_addr;<br>proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>client_max_body_size 50m;<br>client_body;<br>client_max_body_size 50m;<br>client_body_b6m_xy_body_b. timeout 30; <br>proxy_read_timeout 60;<br>proxy_buffer_size 4k;<br>proxy_buffers 4 32k ;<br>proxy_busy_buffers_size 64k;<br>proxy_temp_file_write_size 64k;<br>proxy_next_upstream 錯誤逾時invalid_header http_500 http_503 http_404xy<br>_proxy<br>_Pool; ess 使用者: rw  group:rw  all:r;<br>#nginx 快取               <br>#client_body_temp_path  /data/nginx_cache / client_body 1 2;<br>proxy_temp_path /data/nginx_cache/proxy_temp 1 2;<br><br>#vi  linuxtone_lb.conf<br><br>碼      server_name my.linuxtone.org; <br>        索引index.php;<br> root /data/www/wwwroot/mylinuxtone;        if (-f $request_filename) {             filename/index.php) {       重寫(.*) $1/index.php 中斷;

        }

        error_page 403 http://my.linuxtone.org/member.php?m=user&a=login; quest_filename) {               proxy_pass http://my.linuxtone。 org;<br>               break;<br>           }<br>       <br>}<br><br><br>十三、Nginx簡單最佳化<br><br><br>1.        減少nginx編譯後的檔案大小(減少nginx的檔案大小)<br><br><br>預設的nginx編譯選項裡其實是用debug模式(-g)的(debug模式會插入很多追蹤和ASSERT之類),以後編譯一個nginx有好幾兆。去掉nginx的debug模式編譯,編譯以後只有幾K<br><br><br>在auto/cc/gcc,最後幾行有:<br><br><br># debug<br>CODE:
CFLAGS=”$ 錯誤或刪掉這幾行,重新編譯即可。

2.        修改Nginx的標頭偽裝伺服器
1)        修改nginx.h
CODE:D. NX_VERSION      "1.8" #define NGINX_VER          "LTWS / " NGINX_VERSION#define NGINX_VAR          "NGIN _module
#vi nginx-0.7.30/src/http/ngx_http_header_filter_module.c

將如下程式碼:
static char ngx_http_server_string[] = "伺服器: nginx" CRLF;修改為
程式碼:

static char ngx_http_server_string[] = "伺服器: LTWS" CRLF;

a)        修改nginx_http_header_filter_module<br><br><br>#vi nginx-0.7.30/src/http/ngx_http_specspecial_response.co ic u_http_error_ful l_tail[] =<br>" " NGINX_VER "
" CRLF" " CRLF"" CRLF
; 代碼:

static u_char ngx_http_error_tail[] =

"nginx" CRLF

"" CRLF

"" CRLF;" CRLF"" CRLF"" CRLFstatic u_char ngx_http_error_full_tail[] =<br>"
"NGINX_VER"
" CRLF
"
http://www.linuxtone.org
" CRLF
"" CRLF
"" CRLF
;
static u_char ngx_http_error_tail[] =
"
LTWS
" CRLF
"" CRLF
"" CRLF
;修改後重新編譯一下環境,
404錯誤的時候顯示效果圖(如果沒有指定錯誤頁的話):
404錯誤的時候顯示效果圖(如果沒有指定錯誤頁的話):

png


利用curl指令查看伺服器header

curl.png


3.為特定的CPU指定CPU類型編譯最佳化
3.為特定的CPU指定CPU類型編譯最佳化
更最佳化可以使用以下兩個參數
--with-cc-opt='-O3'
--with-cpu-opt=opteron
使得編譯針對特定CPU以及增加GCC的最佳化.
使得編譯針對特定CPU以及增加GCC的最佳化.
此方法僅對效能有所改善並不會有很大的效能提升,供朋友們參考.
CPUD類型確定: # cat /proc/cpuinfo | grep "model name"
編譯最佳化參數參考:http://en.gentoo-wiki.com/wiki/Safe_Cflags

4.Tcmalloc最佳化Nginx 效能

CODE:<br><br># wget http://download.savannah.gnu.org/rel<br><br># wget http://download.savannah.gnu.org/releases/libunwind/releases/libunwind/releases/libunwind/releases/libunwind/releases/libunwind libunwind-0.99-alpha.tar.gz<br># tar zxvf libunwind-0.99-alpha.tar.gz<br># cd libunwind-0.99-alpha/<br># CFLAGS=-fPIC ./configure-fake CFLA CFLAGS=-fPIC install<br># wget http://google-perftools.googlecode.com/files/google-perftools-0.98.tar.gz<br># tar zxvf google-perftools-0.98.tar.gz<br># cd google-perftools -0.98/<br># ./configure<br># make && make install<br># echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf# ldconfig.conf.d/usr_local_lib.conf# ldconfig
lsof -n |g#ls tcmalloc編譯nginx 載入google_perftools_module:
./configure --with-google_perftools_module
在主設定檔中加入nginx.conf: 5.核心參數最佳化
# vi /etc/sysctl.conf   #在最後增加以下:
CODE:的_range = 5000 65000<br> <br>#讓設定立即生效<br><br><br>/sbin/sysctl -p十四、如何建立高性的LEMP
請參閱: 
http://www.linuxtone.org/lemp/le.pdf 1、提供完整的設定腳本下載:http://www.linuxtone.org/lemp/scripts.tar.gz
2、提供NGINX常見設定範例含(虛擬主機,防盜鏈,Rewrite,存取控制,負載平衡
Discuz相關程式靜態化及等等),你只要稍稍修改即可線上應用。 3.將原版的xcache替換成EA,並提供相關簡單調優腳本及設定檔。
更多的更新資料請關注: http://www.linuxtone.org
十五、Nginx監控
1、        RRDTOOL+Perl腳本畫圖監控🜎本文不作介紹,具體安裝請參考linuxtone監控版塊.
#cd /usr/local/sbnin
#wget http://blog.kovyrin.net/files/mr/rrd_wget 
http://blog.kovyrin.net/files/mr/rrd_wget http://blog.kovyrin.net/files/tg/rrd_wget #mv rrd_nginx.pl.txt rrd_nginx.pl
#chmod a+x rrd_nginx.pl
#vi rrd_nginx.pl   //設定腳本檔案設定好路徑#vi rrd_nginx.pl   //設定腳本檔案設定好路徑
use RRDs;
use LWP::UserAgent;
# define location of rrdtool databases
my $rrd = '/data/www/www/rootngin/wwwn;
my $img = '/data/www/wwwroot/nginx/html';
# define your nginx stats URL
my $URL = "http://219.232.244
my $URL = "http://219.232.2444m. …………
【註】依照自己具體的狀況修改對應的路徑.
#crontab –e //加入如下
* * * * * /usr/local/sbin/rrd
* * * * * /usr/local/sbin/rrd_nginx
重啟crond後,透過設定nginx虛擬主機指到/data/www/wwwroot/nginx/html目錄,透過crond自動執行perl腳本會產生很多圖片.
http://xxx/connections-day. png即可看到伺服器狀態圖。
2、        官方Nginx-rrd 監控服務(多重虛擬主機)(建議)
網址:http://www.nginx.eu/nginx-rrd.html.html方案的一個改進和增強,同樣先安裝好rrdtool這個畫圖工具和相應的perl模組再做如下操作:
# yum install perl-HTML*
先建立好生成的庫存和圖片錄
先建立好生成的庫存和圖片錄
CODE:
#mkdir -p /data/www/wwwroot/nginx/{rrd,html}#cd /usr/local/sbin#wget http://www.nginx.eu/nginx-rrd/nginx- rrd-0.1.4.tgz
#tar zxvf nginx-rrd-0.1.4.tgz#cd nginx-rrd-0.1.4#cd etc/
#cp nginx-rrd.conf /etc#cd etc/#cp nginx-rrd.conf /etc

#cd etc/ cron.d

#cp nginx-rrd.cron /etc/cron.d#cd /usr/local/src/nginx-rrd-0.1.4/html<br># cp index.php /data/www/wwwroot/nginx /html/<br>#cd /usr/local/src/nginx-rrd-0.1.4/usr/sbin<br>#cp * /usr/sbin/<br><br>#vi /etc/nginx-rrd.conf<br><br><br>#vi /etc/nginx-rrd.conf<br><br>CODE: <br>################################################################################################################# ####<br>## dir where rrd databases are storedRRD_DIR="/data/www/wwwroot/nginx/rrd";# dir where png images are presented

WWW_DIR="/root/www/www/rootng /html";

# process nice levelNICE_LEVEL="-19";<br># bin dir<br>BIN_DIR="/usr/sbin";<br># servers 對<br># server_utl;server_name_ .205.13/nginx_status;219.32.205.13  http://www.linuxtone.org/nginx_status;www.linuxtone.org""<br><br>//根據你的具體情況做調整.<br>1905http nginx_status;domain1 http://domain2/nginx_status;domain2<br><br><br>這種格式監控多虛擬主機連線狀態:<br><br>重點啟動crond服務,仍後透過http://219.32.205.13/ngin/html即可訪問。配置過程很簡單!
3、        CACTI範本監控Nginx
利用Nginx_status狀態來繪圖實作CACTI監控
nginx編譯時允許http_stub_status_ .confCODE: I
# wget http://forums.cacti.net/download.php?id=12676# tar xvfz cacti-nginx.tar.gz# cp cacti-nginx/get_nginx_socket_status.pl /data/cacti-nginx/get_nginx_socket_status.pl /data/cacti/script cp cacti-nginx/get_nginx_clients_status.pl /data/cacti/scripts/
# chmod 755 /data/cacti/scripts/get_nginx*檢測插件
CODEDEDE:# /data/cacti/scripts/get_nginx_clients_status.pl http://192.168.1.37/nginx_status在cacti管理面板導入
cacti_graph_template_nginx_clients_stat.xml
cacti_graphi_gacti_stat.xml
cacti_graphi_cact
1、400 bad request錯誤的原因與解決方法
配置nginx.conf相關設定如下.
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;large_client_header_buffers 4 64k;
large_client_header_buffers 4 64k;
2、Nginx 502 Bad Gateway錯誤
proxy_next_upstream error timeout invalid_header http_500 http_503;_
或是嘗試設定3、Nginx出現的413 Request Entity Too Large錯誤
這個錯誤通常在上傳檔案的時候會出現,
編輯Nginx主設定檔Nginx.conf,找到http{}段,加上
client_max_body_size 10m
; //設定根據自己的需求調整.
如果運行php的話這個大小client_max_body_size要和php.ini中的如下值的最大值一致或者稍大,這樣就不會因為提交資料大小不一致出現的錯誤。 post_max_size = 10M
upload_max_filesize = 2M
4、解決504 Gateway Time-out(nginx)
4、解決504 Gateway Time-out(nginx)
這種情況可能是由於nginx預設的fastcgi進程回應的緩衝區太小造成的, 這將導致fastcgi進程被掛起, 如果你的fastcgi服務對這個掛起處理的不好, 那麼最後就極有可能導致504 Gateway Time-out
現在的網站, 尤其某些論壇有大量的回復和很多內容的, 一個頁面甚至有幾百K。
預設的fastcgi進程回應的緩衝區是8K, 我們可以設定大點
在nginx.conf裡, 加入: fastcgi_buffers 8 128kfast如果您在進行某一項即時的操作, 可能需要nginx的超時參數調大點,例如設置成60秒:send_timeout 60;
只是調整了這兩個參數, 結果就是沒有再顯示那個超時, 可以說效果不錯, 但是也可能是由於其他的原因, 目前關於nginx的資料不是很多, 很多事情都需要長期的經驗累計才有結果, 期待您的發現哈!
5、如何使用Nginx Proxy
朋友一台伺服器運行tomcat 為8080埠,IP:192.168.1.2:8080,另一台機器IP:192.168.1.8. 朋友想透過存取
http://192.168.1.8即可存取tomcatcat服務.配置如下:
在192.168.1.8的nginx.conf上配置如下:
CODE:server {
listen 80;server_name java.linuxtone.orglisten 80;server_name java.linuxtone.orglisten 80;
server_name java.linuxtone.org ;include /usr/local/nginx/conf/proxy.conf;

}

}<br>6、如何關閉Nginx的LOG<br><br><br>access_log /dev/null; error_log /dev/null;相關資源下載<br><br><br>1.nginx設定範例及腳本下載:# wget 
http://www.linuxtone.org/lemp/scripts.tar.gz 附】:
本文檔定期更新,同時歡迎朋友多提寶貴意見,豐富nginx tips內容.
最新的文檔發布.請朋友們關注: 
http://bbs.linuxtone.org 以上就介紹了Nginx 常見應用技術指南[Nginx Tips] 第二版,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn