linux Nginx服務配置介紹,和配置流程

1、Nginx 配置介紹

認識Nginx服務的主配置文件 nginx.conf

nginx的配置文件一般在 /usr/local/nginx/conf/下,然后直接vim nginx.com 即可編輯

1.1 全局配置介紹

全局配置位于主配置文件最頂部,作用于整個Nginx服務進程,影響服務的資源分配、運行權限等基礎屬性

我、分別解釋一下其中配置的含義

#user nobody;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #運行用戶,若編譯時未指定則默認為 nobody
worker_processes 4;? ? ? ? ? ? ? ? ? ? ? ? ?#工作進程數量,可配置成服務器內核數 * 2,如果網站訪問量不大,一般設為1就夠用了
#error_log logs/error.log;? ? ? ? ? ? ? ? ? ?#錯誤日志文件的位置
#pid logs/nginx.pid;? ? ? ? ? ? ? ? ? ? ? ? ? ? #PID 文件的位置

1.2 I/O 事件配置介紹

I/O事件配置位于`events {}`塊中,用于定義Nginx處理網絡連接的方式,直接影響服務的并發處理能力。分別解釋一下其中的含義

events {
use epoll;? ? ? ? ? ? ? ? ? ? ? ?#?epoll 模型2.6及以上版本的系統內核,使用epoll模型可以以提高性能
worker_connections 4096;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#每個進程處理 4096 個連接
}


如提高每個進程的連接數還需執行“ulimit -n 65535”命令臨時修改本地每個進程可以同時打開的最大文件數。
在Linux平臺上,在進行高并發TCP連接處理時,最高的并發數量都要受到系統對用戶單一進程同時可打開文件數量的限制(這是因為系統為每個TCP連接都要創建一個socket句柄,每個socket句柄同時也是一個文件句柄)。
?
可使用ulimit -a命令查看系統允許當前用戶進程打開的文件數限制。
/etc/security/limits.conf
?
epoll是Linux內核為處理大批句柄而作改進的poll,是Linux下多路復用IO接口select/poll的增強版本,它能顯著的減少程序在大量并發連接中只有少量活躍的情況下的系統CPU利用率。
若工作進程數為 8,每個進程處理 4 096 個連接,則允許 Nginx 正常提供服務的連接數
已超過 3 萬個(4 096×8=32 768),當然具體還要看服務器硬件、網絡帶寬等物理條件的性
能表現。

1.3 HTTP 配置介紹

HTTP配置位于`http {}`塊中,是Web服務的核心配置區域,定義HTTP協議相關的全局參數、虛擬主機、緩存策略等

使用“http { }”界定標記,包括訪問日志、HTTP 端口、網頁目錄、默認字符集、連接保 持,以及后面要講到的虛擬 Web 主機、PHP 解析等一系列設置,其中大部分配置語句都包 含在子界定標記“server { }”內

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;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ##與sendfile配合使用,合并數據包發送
keepalive_timeout? 65;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ##連接保持超時時間,單位是秒
gzip? on;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #?gzip模塊設置,設置是否開啟gzip壓縮輸出

1.4?Web 服務的監聽配置介紹

監聽配置位于`server {}`塊中,用于定義虛擬主機的訪問入口,包括監聽端口、域名綁定等
server {? ?
listen 80;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??##監聽地址及端口
server_name www.kgc.com;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ##站點域名,可以有多個,用空格隔開
charset utf-8;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?##網頁的默認字符集
location / {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?##根目錄配置
root html;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?##網站根目錄的位置/usr/local/nginx/html??
index index.html index.php;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ##默認首頁文件名
}
error_page 500 502 503 504 /50x.html;? ? ? ? ? ? ? ? ##內部錯誤的反饋頁面
location = /50x.html {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?##錯誤頁面配置
root html;

1.4 其他配置介紹

除核心配置外,Nginx還支持多種擴展配置,滿足不同業務場景需求

?日志格式設定
$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址;
$remote_user:用來記錄客戶端用戶名稱;
$time_local: 用來記錄訪問時間與時區;
$request: 用來記錄請求的url與http協議;
$status: 用來記錄請求狀態;成功是200,
$body_bytes_sent :記錄發送給客戶端文件主體內容大小;
$http_referer:用來記錄從哪個頁面鏈接訪問過來的;
$http_user_agent:記錄客戶瀏覽器的相關信息;
通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。


location常見配置指令,root、alias、proxy_pass
root(根路徑配置):root /var/www/html
請求www.benet.com/test/1.html,會返回文件/var/www/html/test/1.html
?
alias(別名配置):alias /var/www/html
請求www.benet.com/test/1.html,會返回文件/var/www/html/1.html
?
proxy_pass(反向代理配置)

2.nginx 虛擬主機配置流程

2.1 訪問狀態統計配置

1 查看已安裝的所有模塊

先使用命令/usr/local/nginx/sbin/nginx -V 查看已安裝的 Nginx 是否包含 HTTP_STUB_STATUS 模塊?

2 修改 nginx.conf 配置文件

修改 nginx.conf 配置文件,指定訪問位置并添加 stub_status 配置

1.進入 cd /usr/local/nginx/conf目錄下然后先備份nginx文件,輸入cp nginx.conf nginx.conf.bak


然后進入nginx.conf進行配置? ? ? ?vim /usr/local/nginx/conf/nginx.conf
然后在http {}`塊中更改一下設置
http {
......
server {
listen 80;
server_name 10.0.0.250;? ? ? ? ? ?#在這里可以輸入你自己的ip地址或域名
charset utf-8;
location / {
root html;
index index.html index.htm;
}
然后在后面添加 stub_status 配置
location /status {????????????????? #訪問位置為/status
stub_status on;???????????????? #打開狀態統計功能
access_log off;???????????????? #關閉此位置的日志記錄
}
}
}

配置完成可以重啟服務

3 重啟服務,訪問測試

輸入nginx -t 進行檢查,然后重啟nginx服務,輸入:systemctl restart nginx
然后瀏覽器訪問 http://10.0.0.250/status


Active connections :表示當前的活動連接數;
server accepts handled requests :表示已經處理的連接信息,三個數字依次表示已處理的連接數、成功的TCP握手次數、 已處理的請求數。
?
可 curl -s http://10.0.0.250/status 結合 awk與if 語句進行性能監控。
?

3.?基于授權的訪問控制流程

1.先安裝httpd-tools服務輸入?yum install -y httpd-tools?

2.然后創建用戶名密碼文件,輸入:htpasswd -c /usr/local/nginx/passwd.db? ? ?fyl(這里輸入你想輸入的用戶名)然后新建密碼


3.將密碼文件所有權直接交給nginx用戶 輸入? ?chown nginx /usr/local/nginx/passwd.db


4.給文件賦予權限 chmod 400 /usr/local/nginx/passwd.db

5 修改主配置文件相對應目錄,添加認證配置項

vim /usr/local/nginx/conf/nginx.conf

? ?在? location / 下添加認證配置
auth_basic "secret";??????????????? #設置密碼提示框文字信息
auth_basic_user_file /usr/local/nginx/passwd.db;

6.重啟服務,訪問測試

nginx -t? ??systemctl restart nginx


瀏覽器訪問 http://192.168.10.21,輸入剛才的用戶名和密碼

然后登入即可

4.基于客戶端的訪問控制

訪問控制規則如下:
deny IP/IP 段:拒絕某個 IP 或 IP 段的客戶端訪問。
allow IP/IP 段:允許某個 IP 或 IP 段的客戶端訪問。
規則從上往下執行,如匹配則停止,不再往下匹配。
?
vim /usr/local/nginx/conf/nginx.conf? 進入編輯

在 location /下添加一下規則?
##添加控制規則##
allow 10.0.0.250;??????????????????? #允許訪問的客戶端 IP
deny all;?????????????????????????????? #拒絕其它IP客戶端訪問


?
systemctl restart nginx,nginx -t 檢查并重啟,然后訪問10.0.0.250

然后發現其他ip登入沒有權限,只有10.0.0.025才有

5.?基于域名的 Nginx 虛擬主機流程

1. 為虛擬主機提供域名解析

echo "10.0.0.250 www.yjs.com www.fyl.com" >> /etc/hosts

2. 為虛擬主機準備網頁文檔輸入,以下命令

mkdir -p /usr/local/nginx/html/fyl
mkdir -p /usr/local/nginx/html/yjs

echo "<h1>www.yjs.com</h1>" > /usr/local/nginx/html/fyl/index.html
echo "<h1>www.fyl.com</h1>" > /usr/local/nginx/html/yjs/index.html

3. 修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf 進入配置文件進行修改
......
http {
......
server {
listen 80;
server_name www.yjs.com;??????????????????? #設置域名www.yjs.com
charset utf-8;
access_log logs/www.yjs.access.log;???????? #設置日志名
location / {
root /usr/local/nginx/html/yjs/;???????????????? #設置www.yjs.com 的工作目錄
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
?

??? server {
listen 80;
server_name www.fyl.com;????????????????? #設置域名www.fyl.com
charset utf-8;
access_log logs/www.benet.access.log;
location / {
root /usr/local/nginx/html/fyl/;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}

4.重啟服務,訪問測試

systemctl restart nginx,ngint -t
?
瀏覽器訪問
http://www.yjs.com


http://www.fyl.com

6?基于IP 的 Nginx 虛擬主機配置

1先創建一個新網卡 ens36

2. 配置server 1? www.yjs.com設置地址為10.0.0.240:80

配置server ? www.fyl.com設置地址為10.0.0.250:80

server {
listen 10.0.0.250:80;??????????????????? #設置監聽地址10.0.0.250

?
然后檢查重啟nginx服務,然后瀏覽器訪問
http://10.0.0.240
http://10.0.0.250

7 基于端口的 Nginx 虛擬主機

1.進入 vim /usr/local/nginx/conf/nginx.conf設置,然后將www.yjs.com 的端口設置為80
......
http {
......
server {
listen 10.0.0.240:8080;????????????????? #設置監聽 8080 端口
server_name www.yjs.com;
charset utf-8;? ? ? ??

2.將www.fyl.com的端口設置為8888

server {
listen 10.0.0.250:8888;????????????????? #設置監聽 8888 端口
server_name www.fyl.com;

3 重啟服務,測試訪問

systemctl restart nginx -t?
瀏覽器訪問測試
http://192.168.10.21:8080

http://192.168.10.21:8888

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

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

相關文章

文字識別接口-文字識別技術-ocr api

文字識別接口&#xff0c;顧名思義&#xff0c;就是一種將圖像文字或手寫文字轉換為可編輯文本的技術。文字識別接口&#xff0c;基于深度學習算法與自主ocr核心實現多種場景字符的高精度識別與結構化信息提取&#xff0c;現已被廣泛應用于銀行、醫療、財會、教育等多個領域。隨…

DeepSeek R1大模型微調實戰-llama-factory的模型下載與訓練

文章目錄概要1.下載模型2.llama factory 訓練模型2.1 模型微調2.2 模型評估2.3 模型對話2.4 導出模型3.硬件選擇概要 LLaMA Factory 是一個簡單易用且高效的大型語言模型訓練與微調平臺。通過它&#xff0c;用戶可以在無需編寫任何代碼的前提下&#xff0c;在本地完成上百種預…

C++ map和set

C參考文獻&#xff1a;cplusplus.com - The C Resources Network 目錄 一、序列式容器和關聯式容器 二、set系列 &#xff08;1&#xff09;set類的介紹 &#xff08;2&#xff09;set的構造和迭代器 &#xff08;3&#xff09;set的接口 1.insert?編輯 2.find和erase 3…

頭一次見問這么多kafka的問題

分享一篇粉絲朋友整理的面經&#xff0c;第一次遇見問那么多kafka的問題&#xff0c;看看他是怎么回答的。 先來看看 職位描述&#xff1a; 崗位職責&#xff1a; 負責基于 Go 的后端服務的設計、開發和維護&#xff1b;參與系統架構設計&#xff0c;確保系統的高可用性、高性能…

自底向上了解CPU的運算

文章目錄 引言 CPU如何實現邏輯運算 NMOS和PMOS 基于MOS管組合下的邏輯門運算 邏輯運算下運算的實現 ALU的誕生 CPU的誕生 關于二進制運算的研究 十進制轉二進制基礎換算 為什么負數要使用補碼進行表示 為什么反碼就能解決正負數相加問題,我們還需要用補碼來表示負數呢? 小數…

apache poi與Office Open XML關系

以下內容來自AI https://ecma-international.org/publications-and-standards/standards/ecma-376/ 官方規范 https://poi.apache.org/components/oxml4j/index.html java中針對Office Open XML的實現 Apache poi中各個組件 https://poi.apache.org/components/index.html …

S32K328上芯片內部RTC的使用和喚醒配置

1&#xff1a;RTC介紹 1.1 RTC基礎功能介紹 參考《S32K3xx Reference Manual》&#xff0c;S32K328芯片內部自帶RTC功能&#xff0c;并且支持從低功耗狀態下喚醒設備&#xff1b;1.2 RTC電源介紹 由以下三張圖可知 1&#xff1a;RTC由V11供電&#xff0c;V11依賴外部V15供電&am…

【Python】數據可視化之分類圖

目錄 條形圖 箱形圖 散點圖 分簇散點圖 小提琴 分簇小提琴 條形圖 條形圖是一種直觀的圖表形式&#xff0c;它通過不同長度的矩形條&#xff08;即“條形”&#xff09;來展示數值變量的中心趨勢估計值&#xff0c;其中每個矩形的高度直接對應于該組數據的某個中心量度&…

RabbitMQ模型詳解與常見問題

項目demo地址&#xff1a;https://github.com/tian-qingzhao/rabbitmq-demo 一、RabbitMQ組件概念 1.1 Server&#xff1a;接收客戶端的連接&#xff0c;實現AMQP實體服務。 1.2 Connection&#xff1a;連接 應用程序與Server的網絡連接&#xff0c;TCP連接。 1.3 Channel&…

網絡:相比于HTTP,HTTPS協議到底安全在哪?

網絡&#xff1a;相比于HTTP&#xff0c;HTTPS協議到底安全在哪&#xff1f; 我們知道HTTPS也是一種應用層協議&#xff0c;它在HTTP的基礎上有一層加密&#xff0c;因為HTTP的數據傳輸都是以明文方式傳輸的&#xff0c;所以加密主要是為了防止數據在傳輸的時候被篡改 今天我…

AI 基礎設施新范式,百度百舸 5.0 技術深度解析

本文整理自 2025 年 8 月 29 日百度云智大會 —— AI 算力平臺專題論壇&#xff0c;百度智能云 AI 計算首席科學家王雁鵬的同名主題演講。大家下午好&#xff01;昨天在主論壇&#xff0c;我們正式發布了百度百舸 AI 計算平臺 5.0&#xff0c;并展示了多項亮眼的性能數據。今天…

IO進程線程;多線程;線程互斥同步;互斥鎖;無名信號量;條件變量;0905

思維導圖多線程打印ABC運用無名面量 實現進程同步#include<myhead.h> //定義 無名信號量 sem_t sem1; sem_t sem2; sem_t sem3; //線程1 void* task1(void *arg) {while(1){sem_wait(&sem1);printf("A");fflush(stdout);sleep(1);sem_post(&sem2);} } …

固高 GTS-800 運動控制卡完全使用指南:從硬件部署到高階應用

固高 GTS-800 系列運動控制卡作為中端工業控制領域的標桿產品,以其 8-16 軸同步控制能力、豐富的插補功能和穩定的性能,廣泛應用于激光加工、PCB 制造、精密裝配等自動化設備中。本文將系統講解 GTS-800 的硬件架構、開發環境搭建、核心功能實現及工程實踐技巧,幫助工程師快…

STM32F103_Bootloader程序開發15 - 從Keil到vscode + EIDE + GCC的遷移實踐

導言 STM32 - Embedded IDE - GCC - 如何在工程中生成.bin格式固件 STM32 - Embedded IDE - GCC - 使用 GCC 鏈接腳本限制 Flash 區域 STM32 - Embedded IDE - GCC - 如何在工程中定義一段 NoInit RAM 內存 STM32 - Embedded IDE - GCC - 如何將編譯得到的.bin固件添加CRC32校驗…

HTTP協議——理解相關概念、模擬實現瀏覽器訪問自定義服務器

文章目錄HTTP協議理解相關概念HTTP相關背景知識認識URLHTTP協議在網絡通信的宏觀認識urlencode & urldecodeHTTP請求和應答的格式模擬實現瀏覽器訪問自定義服務器關于http requesthttp request的請求行——URI使用瀏覽器完成靜態資源的訪問常用的報頭屬性http response狀態…

【服務器】英偉達M40顯卡風冷方案心得

在之前的博文中&#xff0c;博主說到最近準備自己組裝一臺服務器&#xff0c;主要用于有限元仿真&#xff0c;其次兼顧一部分AI機器學習的工作&#xff0c;于是博主就入手了一張英偉達Tesla M40的12G顯卡GPU。本來博主也糾結過是買M40還是M60&#xff0c;后來在網上看到說M60看…

Java中的鎖升級機制

目錄 核心思想 Java對象頭&#xff08;Object Header&#xff09;與Mark Word 鎖升級的詳細步驟 1. 無鎖&#xff08;No Lock&#xff09; 2. 偏向鎖&#xff08;Biased Locking&#xff09; 3. 輕量級鎖&#xff08;Lightweight Lock&#xff09; 4. 重量級鎖&#xff…

Scikit-learn Python機器學習 - 特征預處理 - 標準化 (Standardization):StandardScaler

鋒哥原創的Scikit-learn Python機器學習視頻教程&#xff1a; 2026版 Scikit-learn Python機器學習 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程主要講解基于Scikit-learn的Python機器學習知識&#xff0c;包括機器學習概述&#xff0c;特征工程(數據…

windows下wsl2 ubuntu開發配置

配置環境變量# 設置方式 命令/文件 生效范圍 適用場景 # 臨時 export FORCE_UNSAFE_CONFIGURE1 當前終端 臨時編譯軟件 # 用戶級永久 ~/.bashrc或~/.profile 當前用戶 長期使用&#xff08;單用戶&#xff09; # 系統級永久 /etc/environment或/…

網絡編程 05:UDP 連接,UDP 與 TCP 的區別,實現 UDP 消息發送和接收,通過 URL 下載資源

一、概述 記錄時間 [2025-09-02] 前置文章&#xff1a; 網絡編程 01&#xff1a;計算機網絡概述&#xff0c;網絡的作用&#xff0c;網絡通信的要素&#xff0c;以及網絡通信協議與分層模型 網絡編程 02&#xff1a;IP 地址&#xff0c;IP 地址的作用、分類&#xff0c;通過 …