Nginx
什么是Nginx?
Nginx是一個輕量級/高性能 的反向代理Web服務(wù)器,用于 HTTP、HTTPS、SMTP、POP3 和IMAP 協(xié)議。它實現(xiàn)非常高效的反向代理、負載平衡,可以處理2-3萬并發(fā)連接數(shù),官方監(jiān)測能支持5萬并發(fā),現(xiàn)在中國使用nginx網(wǎng)站用戶有很多,例如:新浪、網(wǎng)易、騰訊等。
其他 web 網(wǎng)站服務(wù)軟件
Tomcat:Java Servlet和JSP的容器,用于托管Java Web應(yīng)用程序。
IIS:Windows平臺的Web服務(wù)器,與Windows緊密集成,支持ASP.NET等技術(shù)。
Nginx 有哪些優(yōu)點?
? 跨平臺、配置簡單。
? 非阻塞、高并發(fā)連接:處理 2-3 萬并發(fā)連接數(shù),官方監(jiān)測能支持5萬并發(fā)。
? 內(nèi)存消耗?。洪_啟 10 個 Nginx 才占 150M 內(nèi)存。
? 成本低廉,且開源。
? 穩(wěn)定性高,宕機的概率非常小。
? 內(nèi)置的健康檢查功能:如果有一個服務(wù)器宕機,會做一個健康檢查,再發(fā)送的請求就不會發(fā)送到宕機的服務(wù)器了。重新將請求提交到其他的節(jié)點上。
Nginx 應(yīng)用場景
? http服務(wù)器。Nginx是一個http服務(wù)可以獨立提供http服務(wù)。可以做網(wǎng)頁靜態(tài)服務(wù)器。
? 虛擬主機??梢詫崿F(xiàn)在一臺服務(wù)器虛擬出多個網(wǎng)站,例如個人網(wǎng)站使用的虛擬機。
? 反向代理,負載均衡。當網(wǎng)站的訪問量達到一定程度后,單臺服務(wù)器不能滿足用戶的請求時,需要用多臺服務(wù)器集群可以使用 Nginx 做反向代理。并且多臺服務(wù)器可以平均分擔負載,不會應(yīng)為某臺服務(wù)器負載高宕機而某臺服務(wù)器閑置的情況。
? Nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口網(wǎng)關(guān),對每個接口服務(wù)進行攔截。
Nginx 和 Apache 的差異
特點
Apache:
創(chuàng)建多個進程或線程,而每個進程或線程都會為其分配 cpu 和內(nèi)存(線程要比進程小的多,所以 worker 支持比 perfork 高的并發(fā)),并發(fā)過大會榨干服務(wù)器資源。
Nginx:
采用單線程來異步非阻塞處理請求(管理員可以配置 Nginx 主進程的工作進程的數(shù)量)(epol),不會為每個請求分配 cpu 和內(nèi)存資源,節(jié)省了大量資源,同時也減少了大量的 CPU 的上下文切換。所以才使得 Nginx 支持更高的并發(fā)。
區(qū)別
1.輕量級:Nginx 相比 Apache 占用更少的內(nèi)存和系統(tǒng)資源,特別適合高并發(fā)場景。
2.靜態(tài)資源處理性能:Nginx 在處理靜態(tài)資源時性能遠超 Apache,速度更快。
3.反向代理加速:Nginx 支持無緩存的反向代理,可以加速網(wǎng)站訪問,優(yōu)化流量分發(fā)。
4.性能不依賴硬件:Nginx 的性能和可伸縮性不依賴于高性能硬件,Apache 需要較強的硬件資源才能獲得高效能。
5.熱部署支持:Nginx 支持熱部署,可以在不影響服務(wù)的情況下進行配置修改或軟件升級,而 Apache 需要重啟才能應(yīng)用修改。
6.異步與同步處理:Nginx 是異步非阻塞的處理方式,一個進程可以處理多個連接;Apache 則是同步多進程,一個進程處理一個連接。
7.模塊化設(shè)計:Nginx 高度模塊化,開發(fā)模塊相對簡單,并且自帶的組件比 Apache 更少,適合針對特定需求進行優(yōu)化。
8.高并發(fā)性能:Nginx 在高并發(fā)場景下能保持低資源消耗的同時提供高性能,而 Apache 則在高并發(fā)下消耗更多資源。
9.配置簡潔:Nginx 的配置文件相對簡潔,容易上手和維護;而 Apache 的配置文件復(fù)雜,學習成本較高。
這些差異使 Nginx 在處理高并發(fā)、靜態(tài)資源、反向代理等場景下更受歡迎,而 Apache 則更適用于復(fù)雜的動態(tài)內(nèi)容管理或特定模塊需求的環(huán)境。
Nginx 默認的配置文件路徑
在基于RHEL(如CentOS、Fedora)的Linux發(fā)行版中,使用yum安裝 Nginx后,默認的配置文件路徑通常如下:
1.主配置文件:
?/etc/nginx/nginx.conf
這個是Nginx的主配置文件,所有的全局配置選項(如worker進程數(shù)、日志文件路徑、http塊設(shè)置等)都會在這里定義。
2.站點虛擬主機配置目錄:
?/etc/nginx/conf.d/
這個目錄通常包含具體的站點虛擬主機配置文件。默認的站點配置文件為:
?/etc/nginx/conf.d/default.conf
可以在這里添加、修改或刪除站點配置文件。
3.網(wǎng)站根目錄(默認網(wǎng)頁目錄):
?/usr/share/nginx/html/
這是Nginx安裝后,默認的網(wǎng)頁存放目錄。默認的網(wǎng)頁文件(如index.html)也存放在這個路徑中。
4.日志文件路徑:
日志文件路徑可以在nginx.conf文件中通過access_log和error_log指令進行更改。
?訪問日志:/var/log/nginx/access.log
?錯誤日志:/var/log/nginx/error.log
YUM安裝的默認目錄和文件:
/etc/nginx/ # 配置文件目錄 ├── nginx.conf # 主配置文件 └── conf.d/ # 站點配置目錄 └── default.conf # 默認站點配置文件 /usr/share/nginx/html/ # 默認網(wǎng)站根目錄 /var/log/nginx/ # 日志文件目錄
Nginx 服務(wù)的 YUM 安裝
使用官方Y(jié)UM源
# nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
啟動
systemctl start nginx netstat -lntp | grep nginx
查看版本、系統(tǒng)狀態(tài)、開啟模塊等信息
nginx -v
Nginx 服務(wù)的編譯安裝
官網(wǎng)下載軟件包https://nginx.org/en/download.html。生產(chǎn)環(huán)境一般用穩(wěn)定版。
1. 關(guān)閉防火墻并上傳安裝包
1. 關(guān)閉防火墻:
systemctl stop firewalld systemctldisablefirewalld setenforce 0
2. 將 Nginx 安裝包上傳至/opt目錄:
`nginx-1.12.0.tar.gz`
2. 安裝依賴包
Nginx 的配置及運行需要pcre、zlib、openssl等軟件包的支持,安裝這些軟件開發(fā)包提供相應(yīng)的庫和頭文件:
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
3. 創(chuàng)建 Nginx 運行用戶和組
Nginx 默認以nobody身份運行,建議創(chuàng)建專門的用戶和組來更好地控制權(quán)限:
`useradd -M -s /sbin/nologin nginx`
4. 編譯安裝 Nginx
1. 解壓 Nginx 源碼包:
cd/opt tar zxvf nginx-1.12.0.tar.gz -C /opt/
2. 進入解壓后的目錄并配置編譯選項:
cdnginx-1.12.0/ ./configure --prefix=/usr/local/nginx # 指定 Nginx 的安裝路徑 --user=nginx # 指定運行 Nginx 的用戶 --group=nginx # 指定運行 Nginx 的組 --with-http_stub_status_module # 啟用 http_stub_status_module 模塊以支持狀態(tài)統(tǒng)計 #清爽版 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module ![]()
3. 編譯并安裝:
make && make install
4. 創(chuàng)建命令符號鏈接,讓系統(tǒng)可以識別nginx命令:
`ln-s /usr/local/nginx/sbin/nginx /usr/local/sbin/`
5. 管理 Nginx 服務(wù)
1. 檢查 Nginx 配置文件是否正確:
nginx -t
2. 啟動 Nginx:
/usr/local/nginx/sbin/nginx # 或 nginx -g"daemon off;" # 不要以守護進程(daemon)模式運行。
3. 停止 Nginx:
cat/usr/local/nginx/logs/nginx.pid # 查看 Nginx 的 PID kill-3kill-s QUIT killall -3 nginx killall -s QUIT nginx
4. 重載 Nginx 配置:
kill-1kill-s HUP killall -1 nginx killall -s HUP nginx
5. 分割日志并重新打開日志文件:
kill-USR1
6. 平滑升級 Nginx:Nginx 會啟動新版本的可執(zhí)行文件,并且不會中斷現(xiàn)有的連接。這種方式可以實現(xiàn)平滑升級。
kill-USR2
6. Nginx 新版本平滑升級
大致步驟:
下載、解壓軟件包 -> 進入軟件包目錄 ./configure 配置 -> make 編譯 -> 替換nginx二進制文件 -> make upgrade
1. 解壓新版本的 Nginx 源碼包:
tar -zxvf nginx-1.xx.xx.tar.gz cdnginx-1.xx.xx
2. 配置并編譯新版本 Nginx:
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module make
3. 備份舊的 Nginx 二進制文件并替換為新版本(objs目錄):
mv/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old cpobjs/nginx /usr/local/nginx/sbin/nginx
4. 升級 Nginx:
make upgrade # 確保當前 Nginx 進程是通過 /usr/local/nginx/sbin/nginx 啟動的或者先停止舊版本 Nginx,然后啟動新版本:
killall nginx /usr/local/nginx/sbin/nginx
7. Nginx 添加系統(tǒng)服務(wù)
方法一:使用init.d添加 Nginx 系統(tǒng)服務(wù)(腳本)
1. 編輯 Nginx 啟動腳本:
`vim /etc/init.d/nginx`
2. 填寫以下腳本內(nèi)容:
#!/bin/bash #chkconfig: - 99 20 #description: Nginx Service Control Script COM="/usr/local/nginx/sbin/nginx" PID="/usr/local/nginx/logs/nginx.pid" case"$1"in start) $COM ;; stop) kill-s QUIT $(cat$PID) ;; restart) $0stop $0start ;; reload) kill-s HUP $(cat$PID) ;; *) echo"Usage:$0{start|stop|restart|reload}" exit1 esac exit0 ![]()
3. 修改文件權(quán)限并添加為系統(tǒng)服務(wù):
chmod+x /etc/init.d/nginx chkconfig --add nginx
4. 啟動、停止 Nginx 服務(wù):
systemctl stop nginx systemctl start nginx
方法二:使用systemd添加 Nginx 系統(tǒng)服務(wù)
1. 編輯 Nginx 的systemd服務(wù)文件:
`vim /lib/systemd/system/nginx.service`
2. 填寫以下內(nèi)容:
[Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/bin/kill -s HUP$MAINPID ExecStop=/bin/kill -s QUIT$MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target ![]()
3. 各個字段說明:
?[Unit]
?Description:描述服務(wù)
?After:定義服務(wù)的依賴,網(wǎng)絡(luò)服務(wù)啟動后再啟動 Nginx。
?[Service]
?Type=forking:Nginx 以后臺模式運行。
?PIDFile:指定 Nginx 進程 ID 的存放路徑。
?ExecStart:Nginx 的啟動命令。
?ExecReload:Nginx 的重載命令。
?ExecStop:Nginx 的停止命令。
?PrivateTmp=true:為 Nginx 分配獨立的臨時空間。
?[Install]
?WantedBy=multi-user.target:設(shè)置服務(wù)在多用戶模式下啟動。
4. 修改權(quán)限并啟動 Nginx 服務(wù):
chmod754 /lib/systemd/system/nginx.service systemctl start nginx.service systemctlenablenginx.service
Nginx 的2個進程
查看進程后有3個進程,實際有2個Nginx的進程,分別為:
master進程:管理worker進程,加載配置文件
worker進程:處理連接請求
詳解:
ps -elf | grep nginx 1 S root 17968 1 0 80 0 - 5146 sigsus 11:27 ? 0000 nginx: master process /usr/local/nginx/sbin/nginx 5 S nginx 17969 17968 0 80 0 - 5257 ep_pol 11:27 ? 0000 nginx: worker process 0 S root 18037 15136 0 80 0 - 28206 pipe_w 11:34 pts/0 0000 grep --color=auto nginx
這三個進程涉及 Nginx 的工作機制:
1.nginx: master process /usr/local/nginx/sbin/nginx
? 這是 Nginx 的主進程,負責整體管理。它啟動后會監(jiān)聽配置文件變化,管理多個工作進程(worker process)。主進程本身不處理實際的請求,而是用于:
? 讀取和解析配置文件
? 管理子進程(啟動、停止、重啟等)
? 處理信號(如重載、停止等)
2.nginx: worker process
? 這些是 Nginx 的工作進程,負責實際處理客戶端請求。每個 worker 進程獨立處理請求,包括靜態(tài)內(nèi)容、代理請求、負載均衡等。Nginx 使用異步的、事件驅(qū)動的模型,所以一個 worker 可以同時處理大量連接。
3.grep --color=auto nginx
? 這部分是執(zhí)行的grep命令,用于查找與 Nginx 相關(guān)的進程。-color=auto參數(shù)會將匹配到的字符串(這里是 “nginx”)高亮顯示。
總結(jié):主進程負責管理,工作進程負責處理實際的請求。
Nginx 命令管理及進程控制
1.啟動與停止 Nginx
?后臺啟動 Nginx:
`nginx` AI寫代碼bash該命令啟動 Nginx 進程并以后臺模式運行。
?前臺啟動 Nginx:
nginx -g"daemon off;"該命令啟動 Nginx 進程,并以前臺模式運行。此模式主要用于調(diào)試或某些特殊場景。
?停止 Nginx(優(yōu)雅停止):
nginx -s quit kill-3這三種方式都可以優(yōu)雅地停止 Nginx,完成當前連接后停止服務(wù)。nginx -s quit是通過發(fā)送信號讓主進程優(yōu)雅停止,而kill -s QUITkill-s QUIT
2.重新加載 Nginx 配置
?重新加載配置:
這幾種方法用于在不停止 Nginx 的情況下,重新加載配置文件。nginx -s reload通過向 Nginx 主進程發(fā)送HUP信號來重新加載配置,而kill -1
nginx -s reload kill-1kill-s HUP
3.其他進程管理命令
?檢查配置文件語法:
nginx -t該命令檢查 Nginx 配置文件語法的正確性,并報告是否有錯誤。
?日志文件切割(重新生成日志文件):
kill-USR1向 Nginx 主進程發(fā)送USR1信號,用于重新生成日志文件。該命令常用于日志分割,將舊的日志文件關(guān)閉并重新打開新日志文件。
鏈接: https://blog.csdn.net/qq_44421043/article/details/142467150
-
Web
+關(guān)注
關(guān)注
2文章
1287瀏覽量
71424 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9795瀏覽量
87981 -
nginx
+關(guān)注
關(guān)注
0文章
171瀏覽量
12601
原文標題:從Nginx小白到運維高手:安裝配置與進程管理實戰(zhàn)教程
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
nginx重啟命令linux步驟是什么?
nginx重啟命令linux步驟是什么?
NanoPi NEO - 可靠的Nginx 網(wǎng)絡(luò)服務(wù)器
nginx錯誤頁面配置
主要學習下nginx的安裝配置
nginx和tomcat區(qū)別

一文讀懂Nginx、Apache工作原理
Apache Doris正式成為 Apache 頂級項目
Nginx入門指南
Nginx 如何實現(xiàn)高性能低消耗

評論