Nginx的主要配置文件nginx.conf詳細解讀——及其不間斷重啟nginx服務等操作

一、Nginx的配置文件nginx.conf解析

1.1、查看現有已安裝的Nginx版本及其編譯配置參數等信息

查看現在已有使用的Nginx版本及其編譯配置參數等信息
序號安裝編譯Nginx的方式查看現在已有的Nginx版本及其編譯配置參數信息方法
1使用【yum install nginx -y】命令安裝的Nginx
#查看yum命令安裝的Nginx對應版本及其配置參數信息#0-查看當前運行的nginx二進制文件所在路徑
ps -ef | grep nginx
#0.0-查看包含nginx的所有路徑命令
whereis nginx#1-查看當前運行的nginx版本積極配置參數等信息命令
nginx -V
2手動到Nginx官網下載源碼編譯安裝的Nginx
#查看手動到官網下載源碼安裝的Nginx對應版本及其配置參數等信息#0-查看當前運行的nginx二進制文件所在路徑命令
ps -ef | grep nginx
#0.0-查看包含nginx的所有路徑命令
whereis nginx#1-進入Nginx的安裝目錄(比如:/usr/local/nginx/sbin)命令
cd /usr/local/nginx/sbin#2-使用nginx的二進制文件查看命令
./nginx -V

?1.2、Nginx的主要配置文件解析

????????Nginx在安裝完成后,默認的安裝路徑是【/usr/local/nginx】其中【/usr/local/nginx/conf】是配置文件路徑,該路徑下的【nginx.conf】是Nginx的主要配置文件:

Nginx的主要配置文件nginx.conf解析
序號nginx主要配置文件組成說明
1mainmain設置的指令會影響其他所有設置,相當于全局設置。
2eventsevents模塊用來配置影響nginx服務器或與用戶的網絡連接。
3httphttp模塊可以嵌套多個server,主要用來配置代理、緩存、自定義日志格式等絕大多數功能和第三方模塊的配置。
4serverserver模塊用于配置虛擬主機的相關參數內容。
5locationlocation模塊用于配置請求的處理規則,以及各種頁面的處理情況。

該表格中這五個模塊之間的關系是:

《1》main與events平級;

《2》一個http中可以有多個server;

《3》server繼承main,location繼承server。

user  www;
worker_processes  2;
worker_cpu_affinity 01 10;
worker_rlimit_nofile 131070;
pid        logs/nginx.pid;
error_log  logs/error.log  notice;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {use epoll;worker_connections  65535;
}http {include       mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;sendfile        on;tcp_nopush     on;tcp_nodelay    on;#keepalive_timeout  0;keepalive_timeout  65;server_names_hash_bucket_size 128;client_max_body_size 20m;client_header_buffer_size 32k;large_client_header_buffers 4 32k;gzip  on;gzip_min_length 1k;gzip_buffers    4    16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;server {listen       80;server_name  localhost 192.168.1.11;#charset koi8-r;access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

?1.3、Nginx的全局配置項解析

Nginx的全局配置項解析
序號nginx的全局配置項說明
1user

指定Nginx Worker進程運行用戶以及用戶組。

默認由nobody賬號運行,一般指定用www用戶和組運行。

2worker_processes

設置nginx工作的進程數,一般來說,設置成CPU核的數量即可,這樣可以充分利用CPU資源。

#查看cpu的詳細信息命令:
lscpu#快速查看可用的邏輯 CPU 核心數量
nproc#統計邏輯核心總數
grep ^processor /proc/cpuinfo | wc -l
cat /proc/cpuinfo | grep "processor" | wc -l

注意:在nginx1.10版本后,worker_processes指令新增了一個配置值auto,它表示nginx會自動檢測CPU核數并打開相同數量的worker進程。

3worker_cpu_affinity

此指令可將Nginx工作進程與指定CPU核綁定,降低由于多核CPU切換造成的性能損耗。

worker_cpu_affinity使用方法是通過1、0來表示的,CPU有多少個核?就有幾位數,1代表內核開啟,0代表內核關閉。

#有一個4核的服務器,那么nginx配置中worker_processes、worker_cpu_affinity的寫法如下:
worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000;

示例配置表示:4核CPU,開啟4個進程,每個進程都與CPU的每個核進行綁定。其中,0001表示開啟第一個cpu內核,0010表示開啟第二個cpu內核,其它含義依次類推。如果是8核CPU,綁定第一個CPU核,可以寫成00000001,綁定第二個CPU核,可以寫成00000010,依次類推。
worker_cpu_affinity指令一般與worker_processes配合使用,以充分發揮nginx的性能優勢

4error_log

用來定義全局錯誤日志文件。

????????日志輸出級別有debug、info、notice、warn、error、crit可供選擇,其中,debug輸出日志最為最詳細,而crit輸出日志最少。?

5pid用來指定nginx進程id的存儲文件位置。
6worker_rlimit_nofile

用于指定一個Nginx進程可以打開的最多文件描述符數目。

設置為65535,需要使用命令“ulimit -n 65535”來設置。

7events

設定Nginx的工作模式及連接數上限。

???????《1》參數【use】用來指定Nginx的工作模式,Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,對于Linux系統,epoll工作模式是首選。

? ? ? ?《2》參數【worker_connections】用于定義Nginx每個進程的最大連接數,默認是1024在一個純Nginx(無反向代理應用)應用中,最大客戶端連接數由worker_processes和worker_connections決定,即為:max_client=worker_processes*worker_connections
?? ?進程的最大連接數受Linux系統進程的最大打開文件數限制,在執行操作系統命令“ulimit -n 65536”后worker_connections的設置才能生效。

?1.4、HTTP服務器配置解析

HTTP服務器配置解析
序號HTTP的配置項說明
1include是個主模塊指令,實現對配置文件所包含的文件的設定,可以減少主配置文件的復雜度。類似于Apache中的include方法。
2default_type

屬于HTTP核心模塊指令,這里設定默認類型為二進制流,也就是當文件類型未定義時使用這種方式

????????(如:在沒有配置PHP環境時,Nginx是不予解析的,此時,用瀏覽器訪問PHP文件就會出現下載窗口)。

3log_format

用于指定Nginx日志的輸出格式。

????????main為此日志輸出格式的名稱,可以在下面的access_log指令中引用。

4sendfile

用于開啟高效文件傳輸模式【on表示開啟】。

????????將tcp_nopush和tcp_nodelay兩個指令設置為on用于防止網絡阻塞

5keepalive_timeout設置客戶端連接保持活動的超時時間。在超過這個時間之后,服務器會關閉該連接。時間單位是秒。
6server_names_hash_bucket_size

為了提高快速尋找到相應server name的能力,Nginx使用散列表來存儲server name,而server_names_hash_bucket_size就是設置每個散列桶占用的內存大小。

????????server_names_hash_bucket_size 128

7client_max_body_size用來設置允許客戶端請求的最大的單個文件字節數(如:設置為30m)
8client_header_buffer_size

用于指定來自客戶端請求頭的header ?buffer大小。

????????對于大多數請求,1K的緩沖區大小已經足夠,如果自定義了消息頭或有更大的Cookie,可以增加緩沖區大小;如設置為32K。

9large_client_header_buffers?

用來指定客戶端請求中較大的消息頭的緩存最大數量和大小。

????????large_client_header_buffers 4 128k;表示“4”為個數,“128K”為大小,最大緩存量為4個128K。

?1.5、HttpGzip模塊配置解析

HttpGzip模塊配置解析
序號HttpGzip模塊配置項說明
1gzip on用于設置開啟或者關閉gzip模塊,“gzip on”表示開啟GZIP壓縮,實時壓縮輸出數據流。
2gzip_min_length 1k

設置允許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取。默認值是0,不管頁面多大都進行壓縮。

????????建議設置成大于1k的字節數,小于1k可能會越壓越大。

3gzip_buffers 4 16k表示申請4個單位為16K的內存作為壓縮結果流緩存,默認是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果。
4gzip_http_version ?1.1用于設置識別HTTP協議版本,默認是1.1,目前大部分瀏覽器已經支持GZIP解壓,使用默認即可。
5gzip_comp_level ?2用來指定GZIP壓縮比,1表示壓縮比最小,處理速度最快;9表示壓縮比最大,傳輸速度快,但處理最慢,也比較消耗CPU資源。
6gzip_typestext/plain application/x-javascript text/css application/xml:用來指定壓縮的類型,無論是否指定,“text/html”類型總是會被壓縮的。

?1.6、server虛擬主機配置解析

server虛擬主機配置解析
序號server虛擬主機配置項說明
1server定義虛擬主機開始的關鍵字。
2listen用于指定虛擬主機的服務端口。
3server_name用來指定IP地址或域名,多個域名之間用空格分開。
4index用于設定訪問的默認首頁地址。
5root用于指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑。
6access_log用來指定此虛擬主機的訪問日志存放路徑,最后的main用于指定訪問日志的輸出格式。
7error_page

指令可以定制各種錯誤信息的返回頁面。在默認情況下,Nginx會在主目錄的html目錄中查找指定的返回頁面。

????????特別需要注意的是,這些錯誤信息的返回頁面的大小一定要超過512K,否者會被IE瀏覽器替換為IE默認的錯誤頁面。

二、Nginx的管理與維護

?2.1、檢查Nginx配置文件的正確性

#檢查Nginx配置文件的正確性的方法一
/usr/local/nginx/sbin/nginx -t#檢查Nginx配置文件的正確性的方法二(“-t”參數用于檢查配置文件是否正確,但并不執行。“-c”參數用于指定配置文件路徑,如果不指定配置文件路徑,Nginx默認會在安裝時指定的安裝目錄下查找conf/nginx.conf文件)
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

注意:如果在驗證nginx.conf配置文件提示“

nginx: [emerg] getpwnam("www") failed in /usr/local/nginx/conf/nginx.conf:2
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed”錯誤時,意味著名為【www】的用戶找不到,導致驗證這個nginx.conf配置文件失敗
解決方法是創建www用戶和組:

#1-創建【www】用戶和組
useradd www#2-查看【www】用戶的uid、gid和組信息
id www

解決報錯問題后再次驗證【/usr/local/nginx/conf/nginx.conf】配置文件是否正確,如下圖驗證后顯示“

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

”信息表示配置文件的內容沒有問題。

?2.2、Nginx服務的優雅啟動、關閉和重啟

控制Nginx服務的優雅的啟動、關閉與重啟的信號
序號控制nginx服務的信號說明
1QUIT表處理完當前請求后,關閉進程。
2HUP

表示重新加載配置,也就是關閉原有的進程,并開啟新的工作進程。

此操作不會中斷用戶的訪問請求,因此可以通過此信號平滑的重啟Nginx。

3USR1

用于Nginx的日志切換,也就是重新打開一個日志文件。

(如:每天要生成一個新的日志文件時,可以使用這個信號來控制)。?

4USR2用于平滑升級可執行程序。
5WINCH從容關閉工作進程,與QUIT類似。
#0-查看正在運行的nginx服務,并獲取到nginx服務的父進程PID編號
ps -ef | grep nginx#1-不間斷服務地重新啟動Nginx(kill -HUP Nginx的父進程PID編號)
kill -HUP 13561#2-處理完請求后再關閉nginx服務(kill -QUIT Nginx的父進程PID編號)
kill -QUIT 13561#3-啟動nginx服務
/usr/local/nginx/sbin/nginx
#3.1-重啟nginx服務
systemctl start nginx

#也可以強制殺死nginx服務然后在重啟#1-強制殺死nginx服務,不管該nginx有沒有在處理業務請求
killall -9 nginx#2-查看當前nginx服務的進程信息
ps -ef | grep nginx#3-新啟動nginx服務
systemctl start nginx

三、其他相關資料

使用源碼安裝配置Linux上的Web服務器——Nginxhttps://coffeemilk.blog.csdn.net/article/details/150780215Linux系統必學的基礎操作命令——快速上手Linux(下)https://coffeemilk.blog.csdn.net/article/details/149037758

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

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

相關文章

可改善能源利用水平、削減碳排放總量,并為可再生能源規模化發展提供有力支撐的智慧能源開源了

一、平臺簡介 AI 視頻監控平臺是一款功能強大且操作便捷的實時算法視頻監控系統。其核心愿景在于打破各大芯片廠商間的技術壁壘,省去繁瑣重復的適配流程,實現芯片、算法與應用的全流程協同組合 —— 這一創新可幫助企業級應用降低約 95% 的開發成本。同…

“上門做飯”平臺的核心技術棧與運營壁壘是什么?

上門做飯會徹底顛覆外賣行業,成為下一個萬億級風口嗎?答案可能出乎你的意料——不會。但這背后,藏著一個更值得關注的真相。前段時間,杭州上門做飯姑娘的新聞刷屏全網:一天接5-6單,每單最低88元。很多人第一…

企業內網與互聯網網絡安全改造升級深度解析

在信息化時代,企業內網和互聯網的安全性直接影響著業務的穩定性和數據的保密性。然而,隨著網絡威脅的不斷升級,傳統的網絡安全防護手段已難以滿足現代企業的需求。為了應對復雜多變的安全挑戰,構建“邊界清晰、可管可控、多層防御…

參數模板優化配置指南:從基礎到進階的完整解決方案

在數字化運營時代,參數模板優化配置已成為提升系統性能的關鍵環節。本文將深入解析參數配置的核心邏輯,從基礎概念到高級調優技巧,幫助技術人員構建高效穩定的運行環境。我們將重點探討參數模板的標準化管理方法,以及如何通過精細…

Ubuntu 22.04 中安裝 ROS2 Humble

1.4.1前置配置 語言環境支持 UTF-8: sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8 啟用 Universe 倉庫: sudo apt install software-properti…

Python學習-day1

Python學習網站 廖雪峰的官方網站 Python教程 菜鳥教程 Phtyon3教程 W3school Python教程 簡明教程 Python教程 牛客網 Python3教程 Python學習網 Python123 Python官網 Python官方教程中文版 Python在線工具 菜鳥工具 Python3在線運行 W3chool在線編譯 Python3在線…

為什么外貿企業管理需要外貿CRM系統

CRM(Customer Relationship Management)系統,即客戶關系管理軟件,是指利用軟件、硬件和網絡技術,為企業建立一個客戶信息收集、管理、分析和利用的信息系統。為什么外貿企業需要外貿CRM管理系統?傳統的客戶…

Qt基礎_xiaozuo

1.Qt基礎Qt三大機制&#xff1a;對象樹&#xff0c;信號和槽&#xff0c;事件 特殊類的名詞&#xff1a;窗口&#xff0c;組件&#xff0c;控件 2.標準IO #include <QDebug>int main(int argc, char *argv[]) {qDebug() << "字符串&#xff1a;" <&l…

解密PCI Express:現代計算機的“高速公路“是如何設計的?

解密PCI Express&#xff1a;現代計算機的"高速公路"是如何設計的&#xff1f; 當你點擊鼠標打開一個大型游戲時&#xff0c;數據是如何從固態硬盤飛速傳輸到顯卡的&#xff1f;這背后離不開一個關鍵技術的支持——PCI Express。 在現代計算機系統中&#xff0c;各種…

軟件安裝教程(二):Pycharm安裝與配置(Windows)

文章目錄前言一、準備工作&#xff08;安裝前要求&#xff09;二、下載與安裝 PyCharm步驟 1&#xff1a;訪問 PyCharm 官網步驟 2&#xff1a;運行安裝程序步驟 3&#xff1a;完成安裝并啟動三、首次啟動與配置四、創建項目與配置虛擬環境創建新項目配置虛擬環境五、安裝必要的…

Java全棧開發實戰:從基礎到微服務的深度探索

Java全棧開發實戰&#xff1a;從基礎到微服務的深度探索 一、面試開場 面試官&#xff08;專業且親切&#xff09;&#xff1a; 你好&#xff0c;很高興見到你。我是這次面試的負責人&#xff0c;接下來我們會圍繞你的技術背景和項目經驗進行一些深入的交流。我們希望了解你在實…

Redis搭建哨兵模式一主兩從三哨兵

Redis搭建哨兵模式一主兩從三哨兵 目錄 Redis搭建哨兵模式一主兩從三哨兵 一、Redis哨兵模式 1. 哨兵模式原理&#xff1a; 2. 哨兵的作用&#xff1a; 3.哨兵的結構 4.故障轉移機制 故障轉移過程如下&#xff1a; 主節點的選舉條件&#xff1a; 二、節點規劃 三、實…

用 C++ 創建單向鏈表 forward list

文章目錄前言1. 源碼 forward_list.hpp2. 使用示例前言 用 C 創建了一個單向鏈表&#xff0c;用于練習使用現代 C 的特性&#xff0c;包括 3 點&#xff1a; 對于容器&#xff0c;使用 std::initializer_list 作為參數創建構造函數。 C Core Guidelines 中&#xff0c;推薦使…

[肥用云計算] Serverless 多環境配置

前言 在 Serverless 應用開發中&#xff0c;多環境配置是一個繞不開的話題。從開發、測試到生產&#xff0c;每個環境都有其特定的配置需求。阿里云 Serverless Devs 雖然提供了官方的 env 命令來管理多環境&#xff0c;但在實際使用中&#xff0c;我發現官方方案存在一些局限…

LeetCode算法日記 - Day 25: 數組中的第K個最大元素、庫存管理III

目錄 1 數組中的第K個最大元素 1.1 題目解析 1.2 解法 1.3 代碼實現 2. 庫存管理III 2.1 題目解析 2.2 解法 2.3 代碼實現 1 數組中的第K個最大元素 215. 數組中的第K個最大元素 - 力扣&#xff08;LeetCode&#xff09; 給定整數數組 nums 和整數 k&#xff0c;請返…

10分鐘快速搭建 SkyWalking 服務

從 0 開始入門 SkyWalking&#xff0c;搭建 SkyWalking 服務&#xff0c;并接入 Java 項目中實現分布式鏈路追蹤。 Tags 目錄&#xff1a; 1. 概述2. 搭建 SkyWalking 單機環境3. 搭建 SkyWalking 集群環境4. 告警5. 注意事項6. Spring Boot 使用示例 1. 概述 1.1 概念 …

IDEA之GO語言開發

最近因為接到了需求&#xff0c;說是先把目前公司的JAVA服務慢慢替換成GO語言&#xff0c;于是去了解了一下。 但在開發之前&#xff0c;因為用習慣了IDEA&#xff0c;就想著能不能在IDEA上進行開發&#xff0c;結果真讓我找到了。 作為學習記錄一下 注意&#xff1a;基于IDEA…

rapid_table v3.0.0發布了

更新日志 rapid_table v3.0.0 主要更新是支持 batch 推理&#xff0c;模型并沒有升級哈&#xff01; 因為版本號是根據語義化版本號來走的&#xff0c;這次更改了接口的返回值。因此從 v2.0.3 升級到了 v3.0.0。 返回值具體變化如下&#xff1a; # v2.0.3 class RapidTableO…

若依微服務一鍵部署(RuoYi-Cloud):Nacos/Redis/MySQL + Gateway + Robot 接入(踩坑與修復全記錄)

本文記錄我把 高仙&#xff08;Gaussian&#xff09;機器人對接項目 從“本機能跑”遷到 Docker 一鍵部署 的全過程&#xff1a; 包含 四個后端服務&#xff08;gateway/auth/system/robot&#xff09;、前端 Nginx、MySQL/Redis、Nacos 配置中心、Sentinel 控制臺 的改造要點、…

React 業務場景使用相關封裝(hooks 使用)

React 業務場景相關方法封裝&#xff08;hooks 使用&#xff09; React 中常用的三方 hooks 庫 庫名特點常見場景官方文檔ahooks&#xff08;阿里出品&#xff09;豐富實用的 Hooks&#xff0c;和 Ant Design 配合最佳useRequest&#xff08;請求管理&#xff09;、useDeboun…