nginx(發音"engine x")是俄羅斯軟件工程師Igor Sysoev開發的免費開源web服務器軟件。nginx於2004年發佈,聚焦於高性能,高併發和低內存消耗問題。而且具備多種web服務器功能特性:負載均衡,緩存,訪問控制,帶寬控制,以及高效整合各類應用的能力,這些特性使nginx很適合於現代網站架構。目前,nginx已是互聯網上第二流行的開源web服務器軟件。html
三大服務器對好比圖所示:
nginx
整體來講,nginx服務器將會是從此web server的主流服務器。web
在講解nginx配置文件參數前,讓咱們先來了解一下nginx的啓停操做吧。在Linux平臺下,控制nginx服務的啓停可不止有一種方法。
在nginx服務器運行時,會保持着一個主進程和多個work process工做進程,如圖所示:
正則表達式
咱們經過給主進程發送信號就能夠控制服務的啓停了,那麼如何給主進程發送信號呢,首先須要知道主進程號的PID,獲取PID有兩種途徑,經過ps命令就能夠看到主進程號PID了,圖中的8029就是PID;也能夠經過nginx安裝目錄下log中的nginx.pid, Mac下在/usr/local/var/run/nginx.pid中,如圖所示:django
一、nginx可接收的符號有
TERM 或 INT——快速中止nginx服務
QUIT——平緩中止nginx服務
HUP——使用新的配置文件啓動進程,以後平緩中止原有進程,又叫平滑重啓
USER1——從新打開日誌,經常使用於日誌切割
USER2——使用新版本nginx,又叫平滑升級
WINCH——平緩中止work process,用於nginx服務器平滑升級緩存
二、nginx啓動參數:
-c:配置文件
-t:檢查語法錯誤
-p:更改安裝路徑
-q:只顯示錯誤信息服務器
三、nginx中止操做:網絡
nginx -g TERM|INT|QUIT
或者架構
kill -9 | SIGKILL `~/log/nginx.pid`
重啓nginx:併發
nginx -g HUP [-c newconfigure]
四、升級nginx:
更改新安裝路徑
nginx -p newInstallPath
平滑升級
nginx -g USER2
平滑中止舊服務
nginx -g WINCH
衆所周知,默認的nginx配置文件都存放在安裝目錄的conf中,主配置文件名爲nginx.conf,接下來咱們會詳細介紹內部的相關參數。
先看下面的配置項:
worker_processes 1; #全局有效 events { worker_connections 1024; #events部分有效 } http { include mime.types; #http部分有效 default_type applicaiotion/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; #http的server部分有效 location / { #http/server的location部分有效 root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
由上段代碼能夠看出,nginx.conf由三部分組成,全局塊、events塊和http塊。每一個http塊又由http全局塊、多個server塊構成。而每一個server塊又包含多個server塊和多個location塊。
在講解配置項以前,讓咱們先了解一下各個塊的做用。
一、全局塊:主要影響nginx服務器總體運行的配置指令,一般的配置有nginx用戶(組),work process數,進程、日誌文件存放路徑以及配置文件引入等等。
二、events塊:主要影響nginx服務器與用戶的網絡鏈接,一般的配置有開啓對多work process下的網絡鏈接進行序列化,是否容許同時接收多個網絡鏈接,每一個work process同時支持的最大鏈接數等等。
三、http塊:nginx配置核心部分,代理、緩存和日誌定義都放在這個模塊中,一般的配置有文件引入,mime-type定義,鏈接超時時間等等。
四、server塊:至關於一臺虛擬主機,一般的配置是虛擬主機的監聽配置、名稱和IP配置。
五、location塊:至關於server的一個指令,主要做用是基於nginx服務器接收到的請求字符串進行匹配,對特定請求進行處理,一般的配置有地址定向、數據緩存和應答控制等等。
經常使用配置詳解:
listen 192.168.1.10:8000; #監聽具體的ip和端口鏈接 listen 192.168.1.10; #監聽具體ip的全部端口鏈接 listen 8000; #監聽具體端口的全部IP鏈接,等同於listen *:8000
「=」 用於嚴格匹配 「~」 用於區分大小寫的正則表達式匹配 「~*」 用於不區分大小寫的正則表達式匹配 「^*」 用於匹配度最高的location匹配
前提:已安裝django框架、nginx和uwsgi相關服務。
nginx相關配置以下:
uwsgi.py配置以下:
執行:uwsgi --ini=uwsgi.ini
http://blog.csdn.net/hanhuili...
http://hai0378.iteye.com/blog...
http://blog.csdn.net/tjcyjd/a...
nginx高性能web服務器詳解(p22-p47)
http://www.runoob.com/django/...