CentOS7上Nginx的使用


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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM