2015年12月1日

Tornado 教學 (15) - 使用 Nginx 教學 #2 ( Use Nginx for Tornado Web Application #2 )

前一篇介紹了 Nginx 基本的使用方法,接下來要補充介紹一下 Nginx 的 http_stub_status 模組,也就是讓你暸解 Nginx Server 狀態的小工具。( 其他 Tornado 相關教學可以參考本篇整理 )



檢查 Nginx http_stub_status 模組:
首先檢查你的 Nginx 是否帶有 http_stub_status 模組,最簡單的方式檢查的方式如下:
nginx -V
上述指令會列出 Nginx 版本與所包含的模組,確認看看是否有 http_stub_status 模組。若沒有該模組卻又使用 stub_status,執行 Nginx 時會出現錯誤: nginx: [emerg] unknown directive "stub_status"


安裝 Nginx http_stub_status 模組:
若你的安裝的 Nginx 並沒有此模組,我們可以透過重新編譯、安裝步驟來完成。重點是在編譯 Nginx 時需要加入參數 --with-http_stub_status_module。在 Mac OS X 環境上我們仍然可以透過 Homebrew 來重新編譯 Nginx。首先我們要修改 Homebrew 的 Formula ( 即 nginx.rb )。指令:
# 開啟 nginx.rb
brew edit nginx
然後在 args 區塊內加入該參數:
...
args = %W[
  --prefix=#{prefix}
  --with-http_ssl_module
  --with-pcre
  ...
  ...
  --with-http_gzip_static_module
  --with-http_stub_status_module
]
...
修改 nginx.rb 完後,然後使用 Homebrew 重新編譯:
brew reinstall nginx --build-from-source


修改 Nginx 設定檔:
編譯好後,我們需要加入 Nginx stub_status 設定:
location /nginx_status {
     # 開啟 stub_status 設定
     stub_status on;
     access_log off;
     # 只允許特定 IP 瀏覽
     allow 192.168.1.X;
     # 拒絕其他訪問
     deny all;
}
將 Nginx 重新載入後,我們只需要連上 http://your-ip/nginx_status 即可看到簡易的 Server 訊息。


Environment :
  ・ Mac OS X
  ・ Python 2.7

Reference :
  ・ Tornado
  ・ Nginx