Nginx配置使用積累[不斷更新]

zergskj發表於2011-04-05
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/zergskj/article/details/6303453

由於網上Nginx的文件太少,很多特性只能自己去嘗試,遂記錄Nginx的一些使用知識。

以下nginx.conf配置檔案中的配置:

1.Nginx不記錄錯誤日誌:

error_log /dev/null;  #[linux下]

error_log null;       #[Windows下]

2.Nginx不記錄404等錯誤資訊:

error_log  logs/error.log  info;

3.Nginx允許html執行post[解決http/1.1 405 Method not allowed]

error_page   405 =200 @405;
location @405
{
       root  /opt/htdocs;
}

4.Nginx虛擬主機+備機自動上線例子:

http {

upstream myCluster{
     server 192.168.62.102:7001;
     server 192.168.62.101:7001 backup;  #[備機,主機掉線後,備機自動響應]
}

upstream bbsCluster{                    #[虛擬主機,可以繫結不同的域名]
     server 192.168.62.102;
     server 192.168.62.101 backup;
}

server {

  location /virtual {
     proxy_pass  http://myCluster/;      #這裡的名字和上面的cluster的名字相同
     proxy_redirect     off;
     proxy_set_header   Host             $host;
     proxy_set_header   X-Real-IP        $remote_addr;
     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  }

}

server {
        listen       80;
        server_name  bbs.knife.com;      #繫結的第二個域名

        location / {
     proxy_pass  http://bbsCluster/;     #這裡的名字和上面的cluster的名字相同
     proxy_redirect     off;
     proxy_set_header   Host             $host;
     proxy_set_header   X-Real-IP        $remote_addr;
     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }

}

以下是Nginx常用命令:

啟動操作
命令:

nginx
預設為:nginx -c /usr/nginx/conf/nginx.conf
-c引數指定了要載入的nginx配置檔案路徑。

停止操作
停止操作是通過向nginx程式傳送訊號(什麼是訊號請參閱linux文章)來進行的
步驟1:查詢nginx主程式號
ps -ef | grep nginx
在程式列表裡面找master程式,它的編號就是主程式號了。
步驟2:傳送訊號
從容停止Nginx:
kill -QUIT 主程式號
快速停止Nginx:
kill -TERM 主程式號
強制停止Nginx:
pkill -9 nginx

另外,若在nginx.conf配置了pid檔案存放路徑則該檔案存放的就是Nginx主程式號,如果沒指定則放在nginx的logs目錄下。有了pid檔案,我們就不用先查詢Nginx的主程式號,而直接向Nginx傳送訊號了,命令如下:
kill -訊號型別 `/usr/nginx/logs/nginx.pid`

平滑重啟
如果更改了配置就要重啟Nginx,要先關閉Nginx再開啟?不是的,可以向Nginx傳送訊號,平滑重啟。
平滑重啟命令:
kill -HUP 住進稱號或程式號檔案路徑

例如:

kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

注意,修改了配置檔案後最好先檢查一下修改過的配置檔案是否正確,以免重啟後Nginx出現錯誤影響伺服器穩定執行。判斷Nginx配置是否正確命令如下:
nginx -t -c /usr/nginx/conf/nginx.conf

平滑升級
如果伺服器正在執行的Nginx要進行升級、新增或刪除模組時,我們需要停掉伺服器並做相應修改,這樣伺服器就要在一段時間內停止服務,Nginx可以在不停機的情況下進行各種升級動作而不影響伺服器執行。
步驟1:
如果升級Nginx程式,先用新程式替換舊程式檔案,編譯安裝的話新程式直接編譯到Nginx安裝目錄中。
步驟2:執行命令
kill -USR2 舊版程式的主程式號或程式檔名
此時舊的Nginx主程式將會把自己的程式檔案改名為.oldbin,然後執行新版Nginx。新舊Nginx會同市執行,共同處理請求。
這時要逐步停止舊版Nginx,輸入命令:
kill -WINCH 舊版主程式號
慢慢舊的工作程式就都會隨著任務執行完畢而退出,新版的Nginx的工作程式會逐漸取代舊版工作程式。

此時,我們可以決定使用新版還是恢復到舊版。
不過載配置啟動新/舊工作程式
kill -HUP 舊/新版主程式號
從容關閉舊/新程式
kill -QUIT 舊/新主程式號
如果此時報錯,提示還有程式沒有結束就用下面命令先關閉舊/新工作程式,再關閉主程式號:
kill -TERM 舊/新工作程式號

這樣下來,如果要恢復到舊版本,只需要上面的幾個步驟都是操作新版主程式號,如果要用新版本就上面的幾個步驟都操作舊版主程式號就行了。


相關文章