配置
nginx如果編譯的時候,不指定配置目錄的路徑,默認就是安裝目錄下的conf/nginx.conf文件
全局塊
- 配置運行Nginx服務器用戶
如:
<code>user nobody nobody;
/<code>
user是個主模塊指令,指定Nginx Worker進程運行以及用戶組。
<code> 指令格式:user user [group];
/<code>
user:指定可以運行Nginx服務器的用戶;
group:可選項,可以運行Nginx服務器的用戶組。
如果user指令不配置或者配置為user nobody nobody,默認由nobody賬戶運行。
- worker process數
如:
<code>worker_processes 2;
/<code>
woker_processes是個主模塊指令,制定了Nginx要開啟的進程數。每個Nginx進程平均耗費10M~12M內存。建議指定和CPU的數量一致即可。
Nginx服務器實現併發處理服務的關鍵。
<code>指令格式:worker_processes number | auto;
/<code>
number : Nginx 進程最多可以產生的worker process 數。
auto : Nginx 進程將自動檢測
在按照上面的配置格式配置了之後,假如上面的數目是4,那麼啟動Nginx服務器後,在後臺主機上查看Nginx的進程情況,可以看到應該是有4個Nginx進程。
- 錯誤日誌的存放路徑
如:
<code>error_log logs/error.log notice;
/<code>
error_log 是個主模塊指令,用來定義全局錯誤日誌文件。日誌輸出級別有debug,info,notice,warn,error,erit可供選擇,其中,debug輸出日誌最為詳細,而crit輸出日誌最少。
<code>指定格式:error_log file | stderr;
/<code>
file : 日誌輸出到某個文件file stderr : 日誌輸出到標準錯誤輸出 (日誌輸出級別)。
- Nginx進程PID存放路徑
如:
<code>pid logs/nginx.pid;
/<code>
pid是個主模塊指令,用來指定進程pid的存儲文件位置。
Nginx進程是作為系統守護進程在進行,需要在某個文件中保存當前運行程序的主進程號,Nginx支持該保存文件路徑的定義。
<code>指令格式:pid file;
/<code>
file:指定存放路徑和文件名稱。如果不指定,則默認置於路徑 logs/nginx.pid
- worker_rlimit_nofile
如:
<code>worker_rlimit_nofile 65535;
/<code>
用來綁定worker進程和CPU,Linux內核2.4 以上可用
指定進程可以打開的最多文件描述數目,理論值應該是最多打開文件數(ulimit -n )與nginx進程數相除,但是Nginx分配請求並不是那麼均勻,所以最好與ulimit -n 的值保持一致。
現在在Linux2.6 內核下開啟文件打開數為65535,worker_rlimit_nofile 就相應應該填寫65535. 這是因為Nginx調度時請求到進程並不是那麼均衡,所以假如填寫10240,總併發量達到3-4萬時就有進程超過10240了,這就會返回502。
events
事件指令是設定Nginx的工作模式及連接數上限
events事件指令是設定Nginx的工作模式及連接數上限。每個配置選項的含義解釋如下:
- use
如:
<code>use epoll;
/<code>
use是事件模塊指令,用來指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll 。
其中select 和poll 都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺上,而kqueue用在BSD系統中。對於Linux系統,epoll工作模式是首選。
- worker_connections
如:
<code>worker_connections65536;
/<code>
work_connections也是個事件模塊指令,用於定義Nginx每個進程的最大連接數,默認是1024。
http
配置http相關服務
- 定義MIMI-Type
如:
<code>include mime.types;
/<code>
<code>指令格式:include file;
/<code>
該指令主要用於將其他的Nginx配置或第三方模塊的配置引用到當前的主配文件中,減少主配置文件的複雜度。
- default_type
<code>default_type application/octet-stream;
/<code>
屬於HTTP核心模塊指令,這裡設定默認類型為二進制流。也就是當文件類型未定義時使用這種方式,
- 自定義服務日誌
log_format 是Nginx的HttpLog模塊指令,用於指定Nginx日誌的輸出日誌。當然其中還有更為詳細的配置,但是這裡只做大略的研究學習,不過分深入細節。
- 允許sendfile方式傳輸文件
<code>指令格式:sendfile on;
/<code>
這個指令中的參數on是表示開啟高效文件傳輸模式,默認是關閉狀態(off),將tcp_nopush和tcp_nodelay兩個指令設置為on用於防止網絡阻塞;
- 連接超時時間
<code>指令格式:keepalive_timeout number;
/<code>
如:
<code>keepalive_timeout 65;
/<code>
keepalive_timeout 設置客戶端連接保持活動的超時時間。在超過這個時間之後,服務器會關閉該連接;
server
server 塊是對虛擬主機的配置,server標誌定義虛擬主機開始,
- listen用於指定虛擬主機的服務端口,
- server_name 用來指定IP地址或域名,多個域名之間用空格分開。
- index用於設定訪問的默認首頁地址.。
- root指令用於指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑。
- charset用於設置網頁的默認編碼格式。
- access_log 用來指定虛擬主機的訪問日誌存放路徑,最後的main 用於指定訪問日誌的輸出格式。
location
URL地址匹配是進行Nginx配置中最靈活的部分。
location支持正則表達式匹配,也支持條件判斷匹配,用戶可以通過location指令實現Nginx對動、靜態網頁進行過濾處理。
使用location URL匹配配置還可以實現反向代理,用於實現PHP動態解析或者負載負載均衡。
- location配置
- 請求根目錄配置
- 更改location的URI
- 網站默認首頁配置
閱讀更多 linux運維菜 的文章