首頁 後端開發 php教程 Nginx 常見應用技術指南[Nginx Tips] 第二版

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

Jul 30, 2016 pm 01:29 PM
http nbsp nginx quot

作者: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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

nginx怎麼配置雲服務器域名 nginx怎麼配置雲服務器域名 Apr 14, 2025 pm 12:18 PM

在雲服務器上配置 Nginx 域名的方法:創建 A 記錄,指向雲服務器的公共 IP 地址。在 Nginx 配置文件中添加虛擬主機塊,指定偵聽端口、域名和網站根目錄。重啟 Nginx 以應用更改。訪問域名測試配置。其他注意事項:安裝 SSL 證書啟用 HTTPS、確保防火牆允許 80 端口流量、等待 DNS 解析生效。

nginx怎麼查版本 nginx怎麼查版本 Apr 14, 2025 am 11:57 AM

可以查詢 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打開 Nginx 錯誤頁,查看頁面的標題。

nginx服務器掛了怎麼辦 nginx服務器掛了怎麼辦 Apr 14, 2025 am 11:42 AM

當 Nginx 服務器宕機時,可執行以下故障排除步驟:檢查 nginx 進程是否正在運行。查看錯誤日誌以獲取錯誤消息。檢查 nginx 配置語法正確性。確保 nginx 具有訪問文件所需的權限。檢查文件描述符打開限制。確認 nginx 正在偵聽正確的端口。添加防火牆規則以允許nginx流量。檢查反向代理設置,包括後端服務器可用性。如需進一步幫助,請聯繫技術支持。

See all articles