Nginx 的啟動
指定配置文件的方式啟動nginx
# nginx -c /etc/nginx/nginx.conf
對於yum安裝的nginx,使用systemctl命令啟動
# systemctl start nginx
Nginx 的停止
從容停止
kill -QUIT Nginx主進程號
快速停止nginx
kill -TERM Nginx主進程號
強制停止所有nginx進程
pkill -9 nginx
Nginx的平滑重啟
在修改了nginx配置文件后,在重啟nginx之前,需要確認nginx配置文件的語法是否正確,可執行以下命令檢測
# nginx -t -c /etc/nginx/nginx.conf
如上沒有錯誤的話,就可以平滑重啟了
# nginx -s reload
或者
kill -HUP Nginx主進程號
Nginx的平滑升級
對於編譯安裝的nginx,可以將新版本編譯安裝到舊版本的nginx安裝路徑中。替換之前,最好備份一下舊的可執行文件。
下載新版本nginx # wget http://nginx.org/download/nginx-1.9.14.tar.gz 獲取舊版本nginx的configure選項 # nginx -V 編譯新版本nginx # tar -zxvf nginx-1.9.14.tar.gz # cd nginx-1.9.14 # ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' # make 備份舊版本nginx可執行文件,使用新版本nginx可執行文件替代舊的可執行文件 # mv /usr/sbin/nginx /usr/sbin/nginx.old # cp objs/nginx /usr/sbin/nginx
測試新版本nginx是否正常
nginx –t –c /etc/nginx/nginx.conf
平滑升級nginx,舊版本Nginx的pid變為oldbin,此時舊版本和新版本的nginx同時運行,共同處理完用戶請求
kill -USR2 `cat /var/run/nginx.pid`
從容關閉舊版本的nginx進程
kill -WINCH `cat /var/run/nginx.oldbin`
一段時間后,舊版本的nginx進程處理了所有已連接的請求后退出,僅由新版本的nginx進程來處理輸入的請求了,可以通過以下命令查看
# ps -ef | grep nginx
這時候,我們可以決定是使用新版本,還是恢復到舊版本
kill -HUP 舊的主進程號 :Nginx在不重載配置文件的情況下啟動他的工作進程 kill -QUIT 新的主進程號 :從容關閉其工作進程 kill -TERM 新的主進程號 :強制退出 kill 新的主進程號或舊的主進程號:如果因為某些原因新的工作進程不能退出,則向其發送kill信號
新的主進程退出后,舊的主進程會移除 .oldbin 后綴,恢復為它 的 .pid 文件,這樣,一切就恢復到升級之前了。
如果嘗試升級成功,而你也希望保留新的服務器時,可發送 QUIT 信號給舊的主進程,使其退出而只留下新的服務器運行。
Nginx配置文件nginx.conf的結構
1. 全局塊
2. events塊
3. http塊
4. server塊
5. location塊
基本配置
配置運行Nginx服務器用戶(組)
user user [group];
配置允許生成的worker process數
work_processes number | auto;
配置Nginx進程PID存放路徑
pid file;
配置錯誤日志的存放路徑
error_log file | stderr [debug | info | notice | warn | error | crit | alert | emerg];
配置文件的引入
include file;
設置網絡連接的序列化
accept_mutex on | off;
配置是否允許同時連接多個網絡連接
multi_accept on | off;
事件驅動模型的選擇
use method;
配置最大連接數
worker_connections number;
定義MIME-Type
include mime.types; default_type application/octet-stream;
自定義服務日志
access_log path [format [buffer=size]];
配置允許sendfile方式傳輸文件
sendfile on | off;
配置連接超時時間
keepalive_timeout [header_timeout];
單連接請求數上限
keepalive_requests number;
配置網絡監聽
第一種配置監聽的IP地址:
listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbbuf=size] [sndbuf=size] [deferred] [accept_filter=filter] [bind] [ssl];
第二種配置監聽端口:
listen port [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [ssl];
第三種配置UNIX Domain Socket:
listen unix:path [default_server] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ssl];
基於名稱的虛擬主機配置
# 虛擬主機的名稱設置為mysever.com或www.myserver.com server_name myserver.com www.myserver.com; # 使用通配符,通配符只能用在首段或尾段 server_name *.myserver.com www.myserver.*; # 使用正則表達式,~作為正則表達式的開始標記 server_name ~^www\d+\.myserver\.com$;
基於IP的虛擬主機配置
如果只有一個網卡,可以添加多個IP別名
查看網卡信息
# nmcli con show
查看IP信息
# ip addr
添加網卡別名
# nmcli con mod eth0 +ipv4.addresses 10.10.10.21/24
重新加載網卡配置
# nmcli con load /etc/sysconfig/network-scripts/ifcfg-eno16777736 # nmcli dev connect eno16777736
重新查看IP信息
# ip addr
相關配置片段:
... http { server { listen: 80; server_name: 10.10.10.20; ... } server { listen: 80; server_name: 10.10.10.21; ... } ... }
配置location塊
location = [= | ~ | ~* | ^~ ] uri { ... }
"=" 用於標准uri前,要求請求字符串與uri嚴格匹配。
"~" 用於表示uri包含正則表達式,並且區分大小寫。
"~*" 用於表示uri包含正則表達式,並且不區分大小寫。
"^~" 用於標准uri前,要求Nginx服務器找到標識uri和請求字符串匹配度最高的location后,立即使用此location處理請求,而不再使用location塊中的正則uri和請求字符串做匹配。
配置請求的根目錄
root path;
更改location的URI
alias path;
設置網站的默認首頁
index file ...;
設置網站的錯誤頁面
error_page code ... [=[redponse]] uri
基於IP配置Nginx的訪問權限
allow address | CIDR | all; deny address | CIDR | all;