Nginx(基礎安裝+配置文件)

目錄

一.Nginx基礎

1.基礎知識點

2.異步非阻塞機制

二.Nginx安裝

?2.1安裝nginx3種方式

1.包管理工具安裝(yum/apt)

2.本地包安裝(rpm/dpkg)

3.源碼編譯安裝

3.1?源碼編譯安裝nginx流程(ubuntu)

1. 更新apt源、下載lrzsz工具

2.安裝依賴包?

3.創建運行用戶

4.編譯安裝nginx?編輯

5.檢查、啟動、重啟、停止 nginx服務

6.nginx如何前臺啟動?

3.2nginx版本平滑升級??

3.3添加 Nginx 系統服務管理

三.nginx進程?

四.nginx配置


一.Nginx基礎

1.基礎知識點

Nginx 是一個?輕量級、高性能的Web服務應用,可以作為?HTTP 服務器虛擬主機反向代理服務器負載均衡器,以及支持 TCP/UDP 的通用代理服務器

特點:穩定性高、不容易宕機;開源免費;內存/cpu資源消耗較少;并發能力高,至少能同時處理2-3萬并發,最多能支持5萬并發

2.異步非阻塞機制

Nginx 的異步非阻塞機制通過?事件驅動模型?和?I/O 多路復用技術?實現,使得單個 Worker 進程能夠高效處理成千上萬的并發連接。

1. Worker進程初始化,監聽指定的端口(如80或443)。

2. 當有新的連接請求到達時,Worker進程接受該連接,并將其注冊到事件循環中。

3. 事件循環使用I/O多路復用機制(epoll)來監視所有注冊的文件描述符(即連接)。

4. 當某個連接上有可讀或可寫事件發生時,事件循環會觸發相應的回調函數來處理該事件。

5. 在處理事件時,如果需要進行I/O操作(如讀取請求數據或發送響應數據),這些操作會被異步執行,不會阻塞進程。

6. 處理完一個事件后,事件循環繼續檢查其他事件,循環往復。


  • 異步非阻塞 I/O
    當發起 I/O 操作(如讀取網絡數據、寫入文件)時,進程不等待操作完成,而是繼續處理其他任務;操作完成后,通過事件通知機制(如回調函數)處理結果。

  • 事件驅動模型
    Worker 進程通過事件循環(Event Loop)監聽所有連接的事件(如可讀、可寫),僅處理已就緒的事件,避免空等。

  • I/O 多路復用
    使用操作系統提供的機制(如?epollkqueue)同時監控多個文件描述符(即連接),當任意一個描述符就緒時立即通知進程。

二.Nginx安裝

?2.1安裝nginx3種方式

1.包管理工具安裝(yum/apt)

  • 原理:通過系統的包管理工具自動從官方倉庫下載并安裝預編譯的包

  • 特點自動解決依賴自動生成service文件

  • 命令: centos:? ? yum? ?install? nginx? -y? ? ? ? ubuntu:????apt install nginx -y??

2.本地包安裝(rpm/dpkg)

  • 原理:手動下載.rpm(Red Hat系)或.deb(Debian系)包,都屬于預編譯的二進制包

  • 特點:手動解決依賴包含service文件

  • 命令:centos: rpm -i nginx.rpm?ubuntu:? ?dpkg -i nginx.deb?安裝。

3.源碼編譯安裝

  • 原理:從Nginx官網下載源代碼,手動編譯并安裝。

  • 特點

    • 完全自定義可啟用/禁用模塊(如--with-http_ssl_module)、指定安裝路徑(如--prefix=/opt/nginx)。

    • 性能優化自行調整編譯參數(如-march=native)。

    • 手動處理依賴:需提前安裝開發工具(如gcc)及依賴庫(如PCRE、OpenSSL)。

    • 無自動管理:更新需重新編譯,服務腳本需手寫service文件

    • 獨立目錄結構:默認安裝到/usr/local/nginx,與系統包隔離。

3.1?源碼編譯安裝nginx流程(ubuntu)
1. 更新apt源、下載lrzsz工具

?apt update? ? ? ? ? ? ??

?apt install -y lrzsz? ? ? 用于本地主機和服務器相互傳輸文件

2.安裝依賴包?

ubuntu:? ?apt -y install libpcre3-dev zlib1g-dev libssl-dev build-essential

centos:? ?yum -y install gcc pcre-devel openssl-devel zlib-devel openssl ?openssl-devel

3.創建運行用戶

?Nginx 服務程序默認以 nobody 身份運行:useradd? -M -s /sbin/nologin nginx

4.編譯安裝nginx
./configure --prefix=/usr/local/nginx \  #指定了Nginx的安裝目錄。在這種情況下,它將安裝在 /usr/local/nginx 目錄下。
--user=nginx --group=nginx \          #指定了運行Nginx進程的用戶和組。在這種情況下,它將是用戶 和組 nginx。
--with-http_gzip_static_module \       #啟用了支持使用 .gz 擴展名提供預壓縮文件的功能。
--with-http_flv_module \
--with-http_ssl_module \                #啟用了對HTTP連接的SSL/TLS加密支持。
--with-http_realip_module \
--with-http_v2_module \                 #啟用了對HTTP2.0協議的支持
--with-http_sub_module \               
--with-http_mp4_module \              
--with-http_stub_status_module \        #啟用了 stub_status 模塊,提供了訪問Nginx狀態信息的方 法。
--with-pcre \                          #啟用了對Perl Compatible Regular Expressions(PCRE) 庫的支持。
--with-stream \                        #啟用了對TCP/UDP代理模塊的支持。
--with-stream_ssl_module \             #啟用了對TCP/UDP連接的SSL/TLS加密支持。
--with-stream_realip_module            #允許Nginx從PROXY協議頭部獲取客戶端的真實IP地址。

make -j? 2(cpu數量決定)?

make -install (安裝)?

注意:

1.讓系統識別nginx操作命令,將nginx的可執行文件做上軟鏈接?

2.更改nginx文件夾下的屬主屬組

chown -R nginx.nginx /usr/local/nginx

5.檢查、啟動、重啟、停止 nginx服務

1.檢查nginx配置文件:/usr/local/nginx/conf/nginx_conf

?nginx? -t? ? ? 檢查配置文件是否有語法錯誤

2.啟動nginx服務

3.停止nginx服務?

4.重載nginx服務

5.日志分割,重新打開日志文件

nginx 存放日志文件的位置: /usr/local/nginx/logs

生成存放成功日志、錯誤日志的空文件:kill? -USR1? ?$(cat? /usr/local/nginx/logs/nginx.pid)

6.nginx如何前臺啟動
3.2nginx版本平滑升級?

?kill -USR2? ?<PID號>

注意:升級完成后要使用絕對路徑啟動服務,否則升級可能會報錯

3.3添加 Nginx 系統服務管理

因為編譯安裝沒有service文件,如果想要系統服務統一管理systemed,需要編寫service文件。

service 文件

[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

三.nginx進程?

master 進程 :1.管理worker子進程? ?2.加載配置文件

?worker 進程:? ? 1.處理客戶端發送的請求

以處理 HTTP 請求為例:

  1. 接收連接:Worker 進程通過?epoll?監聽端口,接收客戶端連接。

  2. 讀取請求:若數據未到達(非阻塞),Worker 繼續處理其他連接;若數據到達,讀取并解析請求。

  3. 處理請求:若需讀取靜態文件,發起非阻塞文件 I/O 操作;若需代理到后端,發起非阻塞網絡連接。

  4. 響應客戶端:待所有操作完成后,通過事件回調將結果返回客戶端。

? ?1. 核心優勢

  • 低資源消耗:單線程可處理數萬并發連接,避免多線程的內存開銷和上下文切換。

  • 高吞吐量:通過事件分發機制,最大化 CPU 和 I/O 利用率。

四.nginx配置

nginx配置文件的路徑: /usr/local/nginx/conf/nginx_conf

1、全局塊:全局配置,對全局生效;
2、events塊:配置影響 Nginx 服務器與用戶的網絡連接;
3、http塊:配置代理,緩存,日志定義等絕大多數功能和第三方模塊的配置;
4、server塊:配置虛擬主機的相關參數,一個 http 塊中可以有多個 server 塊;
5、location塊:用于配置匹配的 urI? ?(域名后面的部分);
6、upstream:配置后端服務器具體地址,負載均衡配置不可或缺的部分。


?全局塊:全局配置,對全局生效;

?events塊:配置影響 Nginx 服務器與用戶的網絡連接;

?http塊:配置代理,緩存,日志定義等絕大多數功能和第三方模塊的配置;

注意:http模塊中還可以第三方模塊的配置

server塊:配置虛擬主機的相關參數,一個 http 塊中可以有多個 server 塊;
location塊:用于配置匹配的 urI? ?(域名后面的部分);

upstream:配置后端服務器具體地址,負載均衡配置不可或缺的部分。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71727.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71727.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71727.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ Windows下屏幕截圖

屏幕截圖核心代碼&#xff08;如果要求高幀率&#xff0c;請使用DxGI&#xff09;&#xff1a; // RGB到YUV的轉換公式 #define RGB_TO_Y(r, g, b) ((int)((0.299 * (r)) (0.587 * (g)) (0.114 * (b)))) #define RGB_TO_U(r, g, b) ((int)((-0.169 * (r)) - (0.331 * (g)) …

修改jupyter notebook的工作空間

今天&#xff0c;我之前R配置jupyter工作空間&#xff0c;講了各種語言內核分配不同的工作空間&#xff0c;雖然是方便管理&#xff0c;但有個問題就是需要每次都進入C盤的配置文件找到notebook的工作空間設置路徑打開修改嘛。 因此&#xff0c;今天我編寫了一個python腳本&am…

江科大51單片機筆記【9】DS1302時鐘可調時鐘(下)

在寫代碼前&#xff0c;記得把上一節的跳線帽給插回去&#xff0c;不然LCD無法顯示 一.DS1302時鐘 1.編寫DS1302.c文件 &#xff08;1&#xff09;重新對端口定義名字 sbit DS1302_SCLKP3^6; sbit DS1302_IOP3^4; sbit DS1302_CEP3^5;&#xff08;2&#xff09;初始化 因為…

電商行業門店管理軟件架構設計與數據可視化實踐

一、行業痛點與核心訴求 在電商多平臺運營成為主流的背景下,企業普遍面臨三大管理難題: ?數據碎片化:某頭部服飾品牌2023年運營報告顯示,其分布在8個平臺的162家門店,日均產生23萬條訂單數據,但財務部門需要5個工作日才能完成跨平臺利潤核算。?成本核算失真:行業調研…

創新算法!BKA-Transformer-BiLSTM黑翅鳶優化算法多變量時間序列預測

創新算法&#xff01;BKA-Transformer-BiLSTM黑翅鳶優化算法多變量時間序列預測 目錄 創新算法&#xff01;BKA-Transformer-BiLSTM黑翅鳶優化算法多變量時間序列預測預測效果基本介紹BKA-Transformer-BiLSTM黑翅鳶優化算法多變量時間序列預測一、引言1.1、研究背景和意義1.2、…

leetcode 95.不同的二叉搜索樹 Ⅱ

首先分析一下什么是二叉搜索樹。因為我本科學習數據結構的時候就是單純背了一下題庫&#xff0c;考試非常簡單。現在額外補充學一些之前自己沒有學過的內容。有序向量可以二分查找&#xff0c;列表可以快速插入和刪除。二叉搜索樹可以實現按照關鍵碼訪問。call by key .數據表現…

數據安全防線:備份文件的重要性與自動化實踐

在數字化時代&#xff0c;信息已成為企業運營和個人生活的核心資源。無論是企業的核心數據、客戶的敏感信息&#xff0c;還是個人的珍貴照片、重要文檔&#xff0c;這些數據一旦丟失或受損&#xff0c;都可能帶來不可估量的損失。因此&#xff0c;備份文件的重要性不言而喻&…

碰一碰發視頻系統之寫卡功能開發了,支持OEM

一、引言 在碰一碰發視頻系統中&#xff0c;NFC&#xff08;Near Field Communication&#xff0c;近場通信&#xff09;技術扮演著關鍵角色。其中&#xff0c;寫卡功能是實現用戶與系統便捷交互的重要環節&#xff0c;通過將特定的視頻相關信息寫入 NFC 標簽&#xff0c;用戶…

【數據結構初階第十八節】八大排序系列(上篇)—[詳細動態圖解+代碼解析]

看似不起眼的日復一日&#xff0c;總會在某一天讓你看到堅持的意義。??????云邊有個稻草人-CSDN博客 hello&#xff0c;好久不見&#xff01; 目錄 一. 排序的概念及運用 1. 概念 2. 運用 3. 常見排序算法 二. 實現常見排序算法 1. 插入排序 &#xff08;1&…

python爬蟲系列課程8:js瀏覽器window對象屬性

python爬蟲系列課程8:js瀏覽器window對象屬性 一、JavaScript的組成二、document常見屬性對象三、navigator對象一、JavaScript的組成 JavaScript可以分為三個部分:ECMAScript標準、DOM、BOM。 ECMAScript標準:即JS的基本語法,JavaScript的核心,描述了語言的基本語法和數…

快速使用PPASR V3版不能語音識別框架

前言 本文章主要介紹如何快速使用PPASR語音識別框架訓練和推理&#xff0c;本文將致力于最簡單的方式去介紹使用&#xff0c;如果使用更進階功能&#xff0c;還需要從源碼去看文檔。僅需三行代碼即可實現訓練和推理。 源碼地址&#xff1a;https://github.com/yeyupiaoling/P…

cannon g3810打印機設置

現在AI這么厲害&#xff0c;是不是很少人來這里搜索資料了。 不過我還是寫一下。 買了一臺cannon g3810打印機。一直都用USB打印&#xff0c;今天突然想用手機打印。于是又折騰了兩個小時&#xff0c;終于折騰完了。 步驟如下&#xff1a; [1]打開官網&#xff0c;下載佳能…

使用 Arduino 和 ThingSpeak 通過 Internet 進行心跳監測

使用 Arduino 和 ThingSpeak 通過 Internet 進行心跳監測 在這個項目中,我們將使用 Arduino 制作一個心跳檢測和監測系統,該系統將使用脈搏傳感器檢測心跳,并在與其連接的 LCD 上顯示 BPM(每分鐘心跳次數)讀數。它還將使用 Wi-Fi 模塊ESP8266將讀數發送到 ThingSpeak 服務…

vulnhub靶場之【digitalworld.local系列】的snakeoil靶機

前言 靶機&#xff1a;digitalworld.local-snakeoil&#xff0c;IP地址為192.168.10.11 攻擊&#xff1a;kali&#xff0c;IP地址為192.168.10.6 kali采用VMware虛擬機&#xff0c;靶機選擇使用VMware打開文件&#xff0c;都選擇橋接網絡 這里官方給的有兩種方式&#xff0…

自行車的主要品牌

一、國際知名品牌&#xff08;專注運動與高端市場&#xff09; 捷安特&#xff08;GIANT&#xff09; 臺灣品牌&#xff0c;全球最大自行車制造商之一&#xff0c;覆蓋山地車、公路車、通勤車等多品類。 美利達&#xff08;MERIDA&#xff09; 臺灣品牌&#xff0c;以山地車…

C語言(隊列)

1、隊列的原理和作用 1、1 隊列的原理 隊列的原理其實就像一個管道&#xff0c;如果我們不斷的往管道里塞乒乓球&#xff0c;每個乒乓球在管道里就會排列一條隊列&#xff0c;先進去的乒乓球會先出來&#xff0c;這個就是隊列先進先出的規則 球從左邊進去的動作叫入列&#xf…

【C++算法】AVL樹的平衡之美:從理論到C++高效實現

AVL樹是一種自平衡二叉搜索樹,解決了普通二叉搜索樹在數據傾斜時的性能退化問題。本文深入探討了AVL樹的理論基礎,包括平衡因子的定義、旋轉操作的數學推導,并通過LaTeX公式分析其時間復雜度。接著,我們用C++實現了一個完整的AVL樹,包括插入、刪除和平衡調整的詳細代碼,附…

黑金風格人像靜物戶外旅拍Lr調色教程,手機濾鏡PS+Lightroom預設下載!

調色教程 針對人像、靜物以及戶外旅拍照片&#xff0c;運用 Lightroom 軟件進行風格化調色工作。旨在通過軟件中的多種工具&#xff0c;如基本參數調整、HSL&#xff08;色相、飽和度、明亮度&#xff09;調整、曲線工具等改變照片原本的色彩、明度、對比度等屬性&#xff0c;將…

ESP8266 NodeMCU 與 Atmega16 微控制器連接以發送電子郵件

NodeMCU ESP8266 AVR 微控制器 ATmega16 的接口 Atmega16 是一款低成本的 8 位微控制器,比以前版本的微控制器具有更多的 GPIO。它具有所有常用的通信協議,如 UART、USART、SPI 和 I2C。由于其廣泛的社區支持和簡單性,它在機器人、汽車和自動化行業有廣泛的應用。 Atmega1…

【Hadoop】詳解HDFS

Hadoop 分布式文件系統(HDFS)被設計成適合運行在通用硬件上的分布式文件系統&#xff0c;它是一個高度容錯性的系統&#xff0c;適合部署在廉價的機器上&#xff0c;能夠提供高吞吐量的數據訪問&#xff0c;非常適合大規模數據集上的應用。為了做到可靠性&#xff0c;HDFS創建了…