目錄php
Nginx:... 1nginx
NGINX簡介和安裝... 1web
網站... 1express
全稱... 2centos
二次開發版... 2緩存
Nginx的特性... 2性能優化
基本功能... 2服務器
web服務相關的功能... 2架構
Nginx的基本架構:... 3併發
模塊類型... 3
nginx主要用途... 3
nginx安裝配置... 3
編譯安裝... 3
前期準備... 3
從官網獲取源碼包... 4
查看編譯幫助文檔... 4
安裝... 4
啓動NGINX. 5
NGINX配置文件... 5
配置文件組成... 5
配置文件配置指令... 6
配置文件結構... 6
全局配置網段:main block. 6
事件驅動配置... 6
http配置段... 6
配置文件簡介... 7
main配置段... 7
http://nginx.org/, C10k;
http://www.nginx.com
完整寫法engine X:簡寫爲nginx
二次開發版tengine(淘寶), OpenResty
master/worker兩級架構,master主控進程,worker爲子進程,每一個worker都有本身的 核心模塊例如爲了實現http功能有ht_core,和非核心模塊例如ht_proxy,ht_fastcgi
不停機更新配置文件、更換日誌、更新服務器程序版本;
10000個keep-alive鏈接模式下的非活動鏈接(保持鏈接,可是沒有數傳輸)僅消耗2.5M內存;
a) 一個master進程,可生成一個或多個worker進程;
b) master: 加載配置文件、管理worker進程、平滑升級,...
c) worker:http服務,http代理,fastcgi代理,...
a) Standard HTTP modules
b) Optional HTTP modules
c) Mail modules
使用yum info nginx查看相關信息,顯示沒有匹配的軟件包能夠列出,說明nginx並無被收錄至centos發行光盤中。因此可使用epel源來安裝nginx。
yum -y groupinstall "Development Tools" "Server Platform Development"
yum -y install pcre zlib openssl pcre-devel pcre-devel openssl-devel
PCRE – Supports regular expressions. Required by the NGINX Core and Rewrite modules.
zlib – Supports header compression. Required by the NGINX Gzip module.
OpenSSL – Supports the HTTPS protocol. Required by the NGINX SSL module and others.
$ wget https://nginx.org/download/nginx-1.14.2.tar.gz
$ tar zxf nginx-1.14.2.tar.gz #解壓
$ cd nginx-1.14.2
./config --help #返回以下圖結果
注意有些模塊前帶有--without,這表明此模塊默認加載。有些模塊前帶有--with這表明此模塊默認不被加載須要在編譯的時候使用--with-*_module編譯。
./configure
--prefix=/usr/local/nginx
--conf-path=/etc/nginx/nginx.conf
--user=nginx
--group=nginx
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock
--with-http_ssl_module
--with-http_stub_status_module
--with-http_gzip_static_module
--with-debug
make &&make install
/usr/local/nginx/sbin/nginx
這個報錯是由於我在編譯安裝時指定運行worker的用戶爲nginx。然而我沒有在系統中建立這個用戶。
a) 除去上圖全部文件外,nginx配置文件還包括在nginx.conf中使用include指令指定的配置文件。
b) 上圖中有相似A.conf和A.conf.default的配置文件。其中A.conf.default,是默認的配置文件
a) 內置變量:由模塊引入;
b) 自定義變量:
l set variable value;
c) 引用變量:$variable
event {
...
}
http {
...
server {
...
server_name
root
alias
location /uri/ {
}
...
}
server {
...
}
}
a) user USERNAME [GROUPNAME];
指定用於運行worker進程的用戶和組;
eg:user nginx nginx;
b) pid /PATH/TO/PID_FILE;
指定nginx進程的pid文件路徑;
eg:pid /var/run/nginx.pid;
c) worker_rlimit_nofile number;
指定一個worker進程所可以打開的最大文件數量;
a) worker_processes auto|number;
worker進程的個數;一般應該爲物理CPU核心數量減1;
能夠爲"auto",實現自動設定;
b) worker_cpu_affinity auto|CPUMASK CPUMASK ...;
設置worker與CPU的親和力。經過該指令能夠將一個worker進程綁定到指定CPU。
c) worker_priority number;
經過nice值,設置worker進程的優先級,從-20(最高)到19(最低),默認爲0。 注意內核的有優先級爲-5,所以不建議設值<=-5
a) daemon off|on;
是否以守護進程方式啓動nignx;
eg :daemon off
b) master_process on|off;
是否以master/worker模型運行nginx,設置爲off將不啓動worker進程;
c) error_log file [level];
l file:其值能夠是以下幾種
PATH/TO/LOG:記錄日誌文件的位置。s
Stderr:將日誌到處到標準輸出
syslog:server=adderess:將日誌發往指定的日誌服務器
memory:size:將日誌輸出到內存中
l level:設定日誌級別
debug, info, notice, warn, error, crit, alert, or emerg
注意:錯誤日誌文件及其級別;出於調試的須要,能夠設定爲debug;但debug僅在編譯時使用了「--with-debug」選項時纔有效;