最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx服務(wù)部署與配置全過程

 更新時(shí)間:2025年12月22日 10:29:42   作者:Tianzs_  
Nginx是一個(gè)高性能的Web服務(wù)器和反向代理服務(wù)器,具有高并發(fā)、高可靠性、熱部署等特性,它支持HTTP、HTTPS、IMAP、POP3和SMTP協(xié)議,適用于靜態(tài)資源服務(wù)、反向代理、負(fù)載均衡和API網(wǎng)關(guān)等場(chǎng)景,文章還介紹了Nginx的安裝、升級(jí)和反向代理配置方法

一、 概述

Nginx 是開源、高性能、高可靠的 Web服務(wù)器 和反向代理服務(wù)器,而且支持熱部署,幾乎可以做到 7 * 24 小時(shí)不間斷運(yùn)行,即使運(yùn)行幾個(gè)月也不需要重新啟動(dòng),還能在不間斷服務(wù)的情況下對(duì)軟件版本進(jìn)行熱更新。

性能是 Nginx 最重要的考量,其占用內(nèi)存少、并發(fā)能力強(qiáng)、能支持高達(dá) 5w 個(gè)并發(fā)連接數(shù),最重要的是, Nginx 是免費(fèi)的并可以商業(yè)化,配置使用也比較簡(jiǎn)單。

1.1 Nginx 特點(diǎn)

  • 高并發(fā)、高性能;
  • 模塊化架構(gòu)使得它的擴(kuò)展性非常好;
  • 異步非阻塞的事件驅(qū)動(dòng)模型(epoll)這點(diǎn)和 Node.js 相似;
  • 相對(duì)于其它服務(wù)器來說它可以連續(xù)幾個(gè)月甚至更長而不需要重啟服務(wù)器使得它具有高可靠性;
  • 熱部署、平滑升級(jí);
  • 完全開源,生態(tài)繁榮。

1.2 Nginx 作用

  • http服務(wù)器。Nginx可以獨(dú)立提供http服務(wù)。可做網(wǎng)頁靜態(tài)服務(wù)器。
  • 虛擬主機(jī)。可以實(shí)現(xiàn)在一臺(tái)服務(wù)器虛擬出多個(gè)虛擬服務(wù)器。
  • 反向代理,負(fù)載均衡。當(dāng)網(wǎng)站的訪問量達(dá)到一定程度后,單臺(tái)服務(wù)器不能滿足用戶的請(qǐng)求時(shí),需要用多臺(tái)服務(wù)器集群可以使用nginx做反向代理。并且多臺(tái)服務(wù)器可以平均分擔(dān)負(fù)載,不會(huì)應(yīng)為某臺(tái)服務(wù)器負(fù)載高宕機(jī)而某臺(tái)服務(wù)器閑置的情況。
  • nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口網(wǎng)關(guān),對(duì)每個(gè)接口服務(wù)進(jìn)行攔截。

Nginx 是一個(gè)高性能的 HTTP反向代理 服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器。它的工作原理主要基于 事件驅(qū)動(dòng)架構(gòu)異步非阻塞 I/O 模型,使其能夠高效處理大量并發(fā)連接。以下是 Nginx 的核心工作原理:

1.3 Nginx工作原理

1. 事件驅(qū)動(dòng)架構(gòu)(Event-Driven)

Nginx 采用 事件驅(qū)動(dòng) 模型(如 epoll、kqueue),而不是傳統(tǒng)的多線程/多進(jìn)程模型(如 Apache 的 prefork)。

優(yōu)勢(shì)

  • 單個(gè)工作進(jìn)程可以處理數(shù)千個(gè)并發(fā)連接,減少上下文切換和內(nèi)存開銷。
  • 通過事件循環(huán)(Event Loop)監(jiān)聽文件描述符(如 Socket),當(dāng)數(shù)據(jù)就緒時(shí)觸發(fā)回調(diào)函數(shù),避免阻塞。

2. 多進(jìn)程模型(Master-Worker)

Nginx 啟動(dòng)時(shí)分為兩類進(jìn)程:

Master 進(jìn)程

  • 負(fù)責(zé)讀取配置文件、管理 Worker 進(jìn)程(啟動(dòng)、停止、重載配置)。
  • 不直接處理客戶端請(qǐng)求。

Worker 進(jìn)程

  • 實(shí)際處理請(qǐng)求的進(jìn)程(數(shù)量可配置,通常與 CPU 核心數(shù)相同)。
  • 每個(gè) Worker 是獨(dú)立的,通過事件驅(qū)動(dòng)機(jī)制高效處理并發(fā)連接。

優(yōu)勢(shì)

  • Worker 進(jìn)程崩潰時(shí),Master 可以快速重啟新的 Worker,提高穩(wěn)定性。
  • 多 Worker 利用多核 CPU,避免線程競(jìng)爭(zhēng)。

3. 異步非阻塞 I/O

Nginx 使用 非阻塞 I/O 操作:

  • 當(dāng) Worker 處理一個(gè)請(qǐng)求時(shí),如果遇到 I/O 操作(如讀取文件、訪問數(shù)據(jù)庫),不會(huì)等待完成,而是立即處理其他請(qǐng)求。
  • I/O 操作完成后,通過事件通知(如 epoll)觸發(fā)回調(diào)繼續(xù)處理。

對(duì)比傳統(tǒng)阻塞模型

  • Apache 的每個(gè)連接可能需要一個(gè)線程/進(jìn)程,高并發(fā)時(shí)資源消耗大。
  • Nginx 的 Worker 僅在 CPU 計(jì)算時(shí)占用資源,I/O 等待時(shí)不阻塞。

4. 請(qǐng)求處理流程

接收請(qǐng)求

  • Worker 通過監(jiān)聽端口(如 80)接收客戶端連接。

解析請(qǐng)求

  • 解析 HTTP 頭部,確定 Host、URL、方法(GET/POST)等。

匹配 Location

  • 根據(jù)配置文件中的 serverlocation 塊匹配請(qǐng)求。

處理靜態(tài)/動(dòng)態(tài)內(nèi)容

  • 靜態(tài)文件:直接讀取文件并返回(高效,默認(rèn)開啟 sendfile 零拷貝)。
  • 動(dòng)態(tài)請(qǐng)求:通過反向代理(如 FastCGI、uWSGI)轉(zhuǎn)發(fā)到后端服務(wù)(如 PHP、Python)。

返回響應(yīng)

  • 組裝 HTTP 響應(yīng),通過非阻塞 I/O 發(fā)送給客戶端。

5. 高性能關(guān)鍵設(shè)計(jì)

  • 零拷貝(sendfile):靜態(tài)文件直接從磁盤發(fā)送到網(wǎng)絡(luò),無需經(jīng)過應(yīng)用層緩沖區(qū)。
  • 連接復(fù)用(Keepalive):減少 TCP 握手/揮手的開銷。
  • 內(nèi)存池:減少頻繁的內(nèi)存分配/釋放,提高內(nèi)存管理效率。
  • 負(fù)載均衡:作為反向代理時(shí),支持輪詢、IP Hash、加權(quán)分配等算法。

6. 擴(kuò)展性

  • 模塊化設(shè)計(jì):核心功能(如 HTTP、Mail)和第三方模塊(如 Lua、WebSocket)可動(dòng)態(tài)加載。
  • 熱部署:修改配置后,通過 nginx -s reload 平滑重啟,不中斷現(xiàn)有連接。

總結(jié):

Nginx 的高性能源于:

  1. 事件驅(qū)動(dòng) + 非阻塞 I/O:用少量進(jìn)程處理高并發(fā)。
  2. 多進(jìn)程隔離:避免單點(diǎn)故障,利用多核 CPU。
  3. 高效內(nèi)存/文件處理:零拷貝、內(nèi)存池等優(yōu)化。

適合場(chǎng)景:靜態(tài)資源服務(wù)、反向代理、負(fù)載均衡、API 網(wǎng)關(guān)等。

二、Nginx服務(wù)搭建

2.1 Ningx安裝

2.1.1 yum安裝

yum 安裝默認(rèn)安裝在

[root@nginx1~]#yum install -y nginx
##驗(yàn)證安裝結(jié)果
[root@nginx1~]#rpm -q nginx
nginx-1.20.1-7.el7.x86_64

2.1.2 編譯安裝

[root@bogon ~]# tar xf nginx-1.25.3.tar.gz 
[root@bogon ~]# ls
anaconda-ks.cfg  ceph-release-1-1.el7.noarch.rpm  nginx-1.25.3  nginx-1.25.3.tar.gz
[root@bogon ~]# yum install -y pcre-devel
[root@bogon ~]# yum install -y zlib-devel
[root@bogon ~]# cd nginx-1.25.3
[root@bogon nginx-1.25.3]# ./configure --prefix=/usr/local/nginx
checking for OS
 + Linux 3.10.0-1160.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 

三、Nginx服務(wù)平滑升級(jí)

3.1 Nginx添加新模塊

在已編譯安裝Nginx的基礎(chǔ)上添加–with-http_image_filter_module模塊。

(1)進(jìn)入Nginx解壓目錄

[root@bogon nginx-1.25.3]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.25.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx

(2)添加–with-http_image_filter_module模塊。

[root@bogon nginx-1.25.3]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.25.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx  –with-http_image_filter_module
[root@bogon nginx-1.25.3]# make

備份原Nginx二進(jìn)制文件

[root@bogon nginx-1.25.3]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

復(fù)制新的nginx二進(jìn)制文件,進(jìn)入新的nginx源碼包

[root@bogon nginx-1.25.3]# cp /root/nginx-1.25.3/objs/nginx /usr/local/nginx/sbin/nginx

測(cè)試新版本的nginx是否正常

[root@bogon nginx-1.25.3]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

3.2 Nginx版本升級(jí)

1.25版本------>1.27版本

#解壓新版本
[root@bogon ~]# tar zxf  nginx-1.27.3.tar.gz -C /usr/local/
[root@bogon ~]# cd /usr/local/nginx-1.27.3/
[root@bogon nginx-1.27.3]# ./configure --prefix=/usr/local/nginx
checking for OS
 + Linux 3.10.0-1160.el7.x86_64 x86_64
checking for C compiler ... found
#進(jìn)行編譯
#注意:這里不能進(jìn)行,make install 操作,否則將會(huì)被覆蓋,可能會(huì)影響線上業(yè)務(wù)。
[root@bogon nginx-1.27.3]# make 
#拷貝Nginx1.27版本的二進(jìn)制文件到1.25版本
[root@bogon ~]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak  #先備份一份
[root@bogon ~]# cp /usr/local/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/
#啟動(dòng)新的主進(jìn)程,查看升級(jí)后的版本
[root@bogon ~]# kill -USR2 $(cat /usr/local/nginx/logs/nginx.pid)
#查看升級(jí)后的版本
[root@bogon ~]# /usr/local/nginx/sbin/nginx -V

四、Nginx服務(wù)反向代理

概述

什么是反向代理

反向代理代理的是服務(wù)端

反向代理:(reverse proxy),指的是代理外網(wǎng)用戶的請(qǐng)求到內(nèi)部的指定的服務(wù)器,并將數(shù)據(jù)返回給用戶的一種方式

客戶端不直接與后端服務(wù)器進(jìn)行通信,而是與反向代理服務(wù)器進(jìn)行通信,隱藏了后端服務(wù)器的 IP 地址

4.1反向代理實(shí)戰(zhàn)

  • 反向代理服務(wù)器 192.168.49.134
  • 主機(jī) 192.168.49.135
  • 服務(wù)器 192.168.49.136

要求主機(jī)訪問反向代理服務(wù)器時(shí),其實(shí)是去找服務(wù)器,隱藏服務(wù)器ip地址

反向代理服務(wù)器 安裝nginx 配置好文件

在nginx.conf中配置

 server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://192.168.49.136;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
#測(cè)試nginx
nginx -t
#重新加載
nginx -s reload

五、Nginx服務(wù)負(fù)載均衡

服務(wù)端 192.168.49.136 ;客戶端 192.168.49.135

  • 代理端 192.168.49.134
  • 反向代理實(shí)現(xiàn)負(fù)載均衡配置:
  • NGINX的負(fù)載均衡原理是基于反向代理和事件驅(qū)動(dòng)的機(jī)制。

當(dāng)客戶端發(fā)送請(qǐng)求時(shí),NGINX作為反向代理服務(wù)器接收請(qǐng)求,并根據(jù)配置的負(fù)載均衡算法將請(qǐng)求轉(zhuǎn)發(fā)到后端的多個(gè)服務(wù)器上,實(shí)現(xiàn)負(fù)載均衡。

常見配置參數(shù)

location / {
        proxy_pass http://192.168.49.136;
        proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
}

輪詢實(shí)現(xiàn)負(fù)載均衡配置:

upstream group1{
    server 192.164.49.134;
    server 192.164.49.136;
    }
    location / {
    pass_proxy http://group1;
}


nginx -t
nginx -s reload
#重新加載

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Nginx中的Gzip壓縮配置介紹

    Nginx中的Gzip壓縮配置介紹

    這篇文章主要介紹了Nginx中的Gzip壓縮配置介紹,本文先是對(duì)這些指令做了講解,然后給出一個(gè)配置示例,需要的朋友可以參考下
    2014-12-12
  • 使用google-perftools優(yōu)化nginx在高并發(fā)時(shí)的性能的教程(完整版)

    使用google-perftools優(yōu)化nginx在高并發(fā)時(shí)的性能的教程(完整版)

    如果使用googler開發(fā)的google-perftools優(yōu)化Nginx和MySQL的內(nèi)存管理,性能將會(huì)有一定程度的提升。特別是對(duì)高并發(fā)下的服務(wù)器,效果更明顯
    2013-02-02
  • 詳解Nginx反向代理WebSocket響應(yīng)403的解決辦法

    詳解Nginx反向代理WebSocket響應(yīng)403的解決辦法

    本篇文章主要介紹了詳解Nginx反向代理WebSocket響應(yīng)403的解決辦法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Nginx處理跨域問題小結(jié)

    Nginx處理跨域問題小結(jié)

    這篇文章主要介紹了Nginx處理跨域問題小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • 簡(jiǎn)介使用Nginx Plus的在線活動(dòng)監(jiān)控功能的方法

    簡(jiǎn)介使用Nginx Plus的在線活動(dòng)監(jiān)控功能的方法

    這篇文章主要介紹了簡(jiǎn)介使用Nginx Plus的在線活動(dòng)監(jiān)控功能的方法,注意其目前暫時(shí)為收費(fèi)項(xiàng)目,需要的朋友可以參考下
    2015-06-06
  • nginx降權(quán)與匹配php詳細(xì)講解

    nginx降權(quán)與匹配php詳細(xì)講解

    大部分網(wǎng)站開發(fā)語言都要運(yùn)行在服務(wù)器,比如主流的nginx、apache等等,下面這篇文章主要給大家介紹了關(guān)于nginx降權(quán)與匹配php的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 關(guān)于nginx proxy_set部分常見配置

    關(guān)于nginx proxy_set部分常見配置

    這篇文章主要介紹了關(guān)于nginx proxy_set部分常見配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Nginx反向代理后端服務(wù)的操作步驟

    Nginx反向代理后端服務(wù)的操作步驟

    反向代理是一種代理服務(wù)器,位于客戶端與服務(wù)器之間,后端服務(wù)器處理請(qǐng)求后將響應(yīng)發(fā)送回反向代理服務(wù)器,反向代理服務(wù)器再將響應(yīng)返回給客戶端,本文將詳細(xì)介紹Nginx如何反向代理后端服務(wù),涵蓋其基本概念、配置方法、負(fù)載均衡、SSL/TLS支持等多個(gè)方面,需要的朋友可以參考下
    2024-06-06
  • Nginx?403?forbidden錯(cuò)誤的原因以及解決方法

    Nginx?403?forbidden錯(cuò)誤的原因以及解決方法

    yum安裝nginx,安裝一切正常,但是訪問時(shí)報(bào)403 forbidden,下面這篇文章主要給大家介紹了關(guān)于Nginx?403?forbidden錯(cuò)誤的原因以及解決方法,需要的朋友可以參考下
    2022-08-08
  • Mac上搭建nginx+rtmp直播服務(wù)器的步驟詳解

    Mac上搭建nginx+rtmp直播服務(wù)器的步驟詳解

    最近的直播很火,所以這篇文章跟大家分享了在Mac上搭建nginx+rtmp直播服務(wù)器的步驟,文章通過一步步圖文介紹的很詳細(xì),有需要的朋友們可以參考借鑒。
    2016-09-09

最新評(píng)論

太康县| 格尔木市| 长兴县| 昔阳县| 许昌市| 贺兰县| 保定市| 通许县| 攀枝花市| 铜梁县| 桂东县| 平罗县| 黔西县| 宜章县| 万山特区| 旬阳县| 油尖旺区| 兰坪| 龙陵县| 济南市| 蒙阴县| 镇平县| 托克托县| 峨边| 龙州县| 自贡市| 浑源县| 治多县| 万安县| 敦煌市| 兴义市| 通化县| 比如县| 晋中市| 太康县| 吉隆县| 金山区| 邛崃市| 黄龙县| 抚顺县| 东乡县|