Nginx服務的主配置文件及配置舉例

Nginx服務的主配置文件

    • 安裝Nginx
    • 認識Nginx服務
      • 全局配置
      • I/O 事件配置
      • HTTP 配置
      • 日志格式設定
    • 訪問狀態統計配置
      • 查看Nginx已安裝模塊
      • 修改 nginx.conf 配置文件
      • 重啟服務,訪問測試
    • 基于授權的訪問控制
      • 準備用戶密碼認證文件
      • 修改 nginx.conf 配置文件
      • 重啟服務,訪問測試
    • 基于客戶端的訪問控制
      • 訪問控制規則
      • 示例
        • 修改 nginx.conf 配置文件
        • 重啟服務,訪問測試
      • 訪問控制注意事項
    • Nginx虛擬主機
      • 準備工作
        • 為虛擬主機準備網頁文檔
      • 基于域名的 Nginx 虛擬主機
        • 為虛擬主機提供域名解析
        • 修改Nginx的配置文件
        • 重啟服務,訪問測試
      • 基于IP 的 Nginx 虛擬主機
        • 新增網卡配置
        • 修改Nginx的配置文件
        • 重啟服務,訪問測試
      • 基于端口的 Nginx 虛擬主機
        • 修改Nginx的配置文件
        • 重啟服務,訪問測試

安裝Nginx

鏈接: 安裝Nginx

安裝Nginx服務請轉移到上文博客

認識Nginx服務

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

配置文件位置
/usr/local/nginx/conf/nginx.conf

全局配置

#user nobody; 					#運行用戶,若編譯時未指定則默認為 nobody
worker_processes 1; 			#工作進程數量,一般設置為和 CPU 核數一樣。設置為auto,nginx將會自己獲取這個數值
#error_log logs/error.log; 		#錯誤日志文件的位置
#pid logs/nginx.pid; 			#PID 文件的位置
worker_rlimit_nofile 65535;		#指定 worker 子進程可以打開的最大文件句柄數,默認為1024

在這里插入圖片描述

默認全局配置

I/O 事件配置

2.I/O 事件配置
events {use epoll; 					#使用 epoll I/O模型,2.6及以上版本的系統內核,建議使用epoll模型以提高性能worker_connections 65535; 	#每個 worker 子進程能夠處理的最大并發連接數multi_accept on;            #是否一次性將監聽到的連接全接收進來,默認為off,關閉時一次接收一條連接accept_mutex on;            #默認為on,開啟時表示以串行方式接入新連接,否則將通報給所有worker。這可能會浪費資源并產生不可預計的后果,例如驚群問題
}

#如提高每個進程的連接數還需執行“ulimit -HSn 65535”命令臨時修改本地每個進程可以同時打開的最大文件數。
#在Linux平臺上,在進行高并發TCP連接處理時,最高的并發數量都要受到系統對用戶單一進程同時可打開文件數量的限制(這是因為系統為每個TCP連接都要創建一個socket句柄,每個socket句柄同時也是一個文件句柄)。
#可使用ulimit -a命令查看系統允許當前用戶進程打開的文件數限制。
#epoll是Linux內核為處理大批句柄而作改進的poll,是Linux下多路復用IO接口select/poll的增強版本,它能顯著的減少程序在大量并發連接中只有少量活躍的情況下的系統CPU利用率。
#worker_processes的值和work_connections的值決定了最大并發數量,最大并發數計算方式為:worker_processesworker_connections。但在反向代理場景中計算方法不同,因為nginx既要維持和客戶端的連接,又要維持和后端服務器的連接,因此處理一次連接要占用2個連接,所以最大并發數計算方式為:worker_processesworker_connections/2。

在這里插入圖片描述

默認I/O 事件配置

HTTP 配置

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和tcp_nodelay用于防止網絡阻塞tcp_nopush     on;tcp_nodelay    on;##連接保持超時時間,單位是秒#keepalive_timeout  0;keepalive_timeout  65;##gzip模塊設置,設置是否開啟gzip壓縮輸出#gzip  on;##Web 服務的監聽配置server {##監聽地址及端口listen 80; ##站點域名,可以有多個,用空格隔開server_name www.kgc.com;##網頁的默認字符集charset utf-8;##根目錄配置location / {##網站根目錄的位置/usr/local/nginx/htmlroot html;##默認首頁文件名index index.html index.php;}##內部錯誤的反饋頁面error_page 500 502 503 504 /50x.html;##錯誤頁面配置location = /50x.html {root html;}}
}

日志格式設定

r e m o t e a d d r 與 remote_addr與 remotea?ddrhttp_x_forwarded_for用以記錄客戶端的ip地址;
$remote_user:用來記錄客戶端用戶名稱;
$time_local: 用來記錄訪問時間與時區;
$request: 用來記錄請求的url與http協議;
$status: 用來記錄請求狀態;成功是200,
$body_bytes_sent :記錄發送給客戶端文件主體內容大小;
$http_referer:用來記錄從哪個頁面鏈接訪問過來的;
h t t p u s e r a g e n t :記錄客戶瀏覽器的相關信息;通常 w e b 服務器放在反向代理的后面,這樣就不能獲取到客戶的 I P 地址了,通過 http_user_agent:記錄客戶瀏覽器的相關信息; 通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過 httpu?sera?gent:記錄客戶瀏覽器的相關信息;通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。

location常見配置指令,root、alias、proxy_pass
root(根路徑配置,可以寫在 http、server、location 等配置中):root /var/www/html
請求www.kgc.com/test/1.html,會返回文件/var/www/html/test/1.html

alias(別名配置,只能寫在 location 中):alias /var/www/html/ 注:使用 alias 末尾要添加 /
請求www.kgc.com/test/1.html,會返回文件/var/www/html/1.html

proxy_pass(反向代理配置)

在這里插入圖片描述

默認HTTP事件配置

訪問狀態統計配置

查看Nginx已安裝模塊

查看已安裝的 Nginx 是否包含HTTP_STUB_STATUS 模塊

cat /opt/nginx-1.12.0/auto/options | grep YES     #可查看 nginx 已安裝的所有模塊/usr/local/nginx/sbin/nginx -V 查看已安裝的模塊

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

修改 nginx.conf 配置文件

cd /usr/local/nginx/confcp nginx.conf nginx.conf.bak		#備份原來的配置文件vim /usr/local/nginx/conf/nginx.confhttp {......server {listen 80;server_name www.kgc.com;charset utf-8;location / {root html;index index.html index.php;}##添加 stub_status 配置##location /status { 					#訪問位置為/statusstub_status on; 				#打開狀態統計功能access_log off; 				#關閉此位置的日志記錄}}}

在這里插入圖片描述
在這里插入圖片描述

重啟服務,訪問測試

nginx -t		#檢查配置文件是否配置正確
systemctl restart nginx

在這里插入圖片描述
在這里插入圖片描述

瀏覽器訪問 http:///status

在這里插入圖片描述

Active connections:表示當前的活動連接數,即當前與 Nginx 服務器建立的連接數。
server accepts handled requests :表示已經處理的連接信息
三個數字依次表示服務器已接收的連接數;服務器成功處理的連接數;服務器累計處理的總請求數(在保持連接模式下,請求數量可能會大于連接數量)
Reading:表示當前正在從客戶端讀取數據的連接數。
Writing:表示當前正在向客戶端寫入數據的連接數。
Waiting:表示當前空閑并等待請求的連接數。

可 curl -Ls http://192.168.80.10/status 結合 awk與if 語句進行性能監控。

基于授權的訪問控制

準備用戶密碼認證文件

yum install -y httpd-tools	#下載安裝httpd-toolshtpasswd -c /usr/local/nginx/passwd.db wl	#創建文件并在文件內創建用戶wlchown nginx /usr/local/nginx/passwd.db	#更改文件擁有者chmod 400 /usr/local/nginx/passwd.db	#更改用戶訪問權限

在這里插入圖片描述
在這里插入圖片描述

修改 nginx.conf 配置文件

vim /usr/local/nginx/conf/nginx.conf
####只對訪問狀態統計站點生效......server {location /status {......##添加認證配置##auth_basic "secret";				#設置密碼提示框文字信息auth_basic_user_file /usr/local/nginx/passwd.db;}}

在這里插入圖片描述
在這里插入圖片描述

重啟服務,訪問測試

nginx -t		#檢查配置文件是否配置正確
systemctl restart nginx

在這里插入圖片描述
瀏覽器訪問 http:///status
輸入剛剛創建的用戶和密碼,才可以繼續訪問
在這里插入圖片描述

如需要再次測試,請提前清楚瀏覽器訪問數據

基于客戶端的訪問控制

訪問控制規則

deny IP/IP 段:拒絕某個 IP 或 IP 段的客戶端訪問。
allow IP/IP 段:允許某個 IP 或 IP 段的客戶端訪問。
規則從上往下執行,如匹配則停止,不再往下匹配。

示例

除本機外其他地址均拒絕訪問 “status” 站點

修改 nginx.conf 配置文件
vim /usr/local/nginx/conf/nginx.conf......server {location /status {......##添加控制規則##allow 192.168.80.200; 					#允許訪問的客戶端 IPdeny all;								#拒絕其它IP客戶端訪問}}

在這里插入圖片描述

重啟服務,訪問測試
nginx -t		#檢查配置文件是否配置正確
systemctl restart nginx

在這里插入圖片描述

  • 本機訪問測試
    在這里插入圖片描述
    可以訪問
  • 其他端訪問測試
    在這里插入圖片描述
    無法訪問

訪問控制注意事項

  • 在 http{…}配置塊(對所有站點生效)
  • server{…}配置塊(對當前站點所有的訪問路徑生效)
  • location{…}配置塊(只對當前站點指定的URL訪問路徑生效) 中添加配置

Nginx虛擬主機

準備工作

為虛擬主機準備網頁文檔
mkdir -p /var/www/html/wl	echo "<h1>www.wl.com</h1>" > /var/www/html/wl/index.htmlcat /var/www/html/wl/index.htmlmkdir -p /var/www/html/tjecho "<h1>www.tj.com</h1>" > /var/www/html/tj/index.htmlcat /var/www/html/tj/index.html

在這里插入圖片描述

基于域名的 Nginx 虛擬主機

為虛擬主機提供域名解析
echo "<IP> <域名1> <域名2>" >> /etc/hosts

在這里插入圖片描述

修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 80;server_name www.tj.com;					#設置域名www.tj.comcharset utf-8;access_log logs/www.tj.access.log; 		#設置日志名location / {root /var/www/html/tj;					#設置www.tj.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.wl.com;					#設置域名www.wl.comcharset utf-8;access_log logs/www.wl.access.log; location / {root /var/www/html/wl;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}	
}

在這里插入圖片描述

重啟服務,訪問測試
nginx -t		#檢查配置文件是否配置正確
systemctl restart nginx

在這里插入圖片描述
瀏覽器訪問

  • http://www.tj.com
    在這里插入圖片描述

  • http://www.wl.com
    在這里插入圖片描述

基于IP 的 Nginx 虛擬主機

新增網卡配置

在這里插入圖片描述

nmcli connection modify ens36 ipv4.addresses 10.190.33.50/24 ipv4.gateway 10.190.33.2nmcli connection up ens36

在這里插入圖片描述

修改Nginx的配置文件
......
http {
......server {listen <網卡1IP>:80;					#設置監聽地址10.190.33.30server_name www.tj.com;charset utf-8;access_log logs/www.tj.access.log; location / {root /var/www/html/tj;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen <網卡2IP>:80;					#設置監聽地址10.190.33.50server_name www.wl.com;charset utf-8;access_log logs/www.wl.access.log; location / {root /var/www/html/wl;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}	
}

在這里插入圖片描述

重啟服務,訪問測試
nginx -t		#檢查配置文件是否配置正確
systemctl restart nginx

在這里插入圖片描述
瀏覽器訪問

  • "IP1"訪問
    在這里插入圖片描述

  • “IP2”訪問

基于端口的 Nginx 虛擬主機

修改Nginx的配置文件
......
http {
......server {listen 10.190.33.30:8014;					#設置監聽 8014 端口server_name www.tj.com;charset utf-8;access_log logs/www.tj.access.log; location / {root /var/www/html/tj;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen 10.190.33.30:8888;					#設置監聽 8888 端口server_name www.wl.com;charset utf-8;access_log logs/www.wl.access.log; location / {root /var/www/html/wl;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}	
}

在這里插入圖片描述

重啟服務,訪問測試
nginx -t		#檢查配置文件是否配置正確
systemctl restart nginx

在這里插入圖片描述
瀏覽器訪問

  • 8014端口訪問
    在這里插入圖片描述

  • 8888端口訪問
    在這里插入圖片描述

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

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

相關文章

java向上轉型

介紹 代碼 父類 package b;public class father_ {//father classString name"動物";int age10;public void sleep() {System.out.println("睡");}public void run() {System.out.println("跑");}public void eat() {System.out.println("…

ISCC2024之Misc方向WP

目錄 FunZip Magic_Keyboard Number_is_the_key RSA_KU 成語學習 鋼鐵俠在解密 工業互聯網模擬仿真數據分析 精裝四合一 時間刺客 有人讓我給你帶個話 FunZip 題目給了一個txt&#xff0c;內容如下 一眼丁真&#xff0c;base隱寫&#xff0c;使用工具即可得到flag Fl…

聯邦學習的簡要概述

聯邦學習的簡要概述 聯邦學習&#xff08;Federated Learning, FL&#xff09;是一種分布式機器學習方法&#xff0c;旨在保護數據隱私的同時&#xff0c;利用多方數據進行模型訓練。以下是對聯邦學習的詳細介紹&#xff0c;包括其基本概念、工作流程、優勢和挑戰&#xff0c;…

常見的 MySQL 優化方法

常見的 MySQL 優化方法 常見的 MySQL 優化方法選擇最合適的字段屬性盡量把字段設置為 NOT NULL使用連接&#xff08;JOIN&#xff09;來代替子查詢&#xff08;Sub-Queries&#xff09;使用聯合&#xff08;UNION&#xff09;來代替手動創建的臨時表事務鎖定表使用外鍵使用索引…

在Centos上為Tesla T4顯卡安裝NVIDIA驅動以及cuda和cudnn

前期準備&#xff1a; 升級gcc編譯環境&#xff1a; 查看gcc版本&#xff1a; gcc -v &#xff08;centos默認好像是4.8.5版本&#xff09; 升級gcc&#xff1a; yum install centos-release-scl yum install devtoolset-9-gcc* 備份舊鏈接創建新鏈接&#xff1a;…

壓測工具sysbench

一、安裝 yum install gcc gcc-c autoconf automake make libtool bzr mysql-devel mysql libaio-devel yum remove mariadb.x86_64 mariadb-devel.x86_64 sh install-mysql.sh --installmysql --innodbbufferpoolsize2G --datadir/mysql/data --password123321 --binlogdir…

----JAVA 繼承----

引言 再java中你能創造出很多的類&#xff0c;但如果這些類中的成員再另一個類中也要使用&#xff0c;那么就要用到繼承來實現指定類中成員的使用了 那么也就可以寫出這樣的代碼 再類Cat中使用了類Animal的成員&#xff0c;這里我們稱Cat叫子類&#xff0c;Animal叫父類 概念…

Ubuntu22.04嵌入開發環境之NFS文件系統

近期我把Ubuntu18.04開發環境改成了22.04寫一上安裝過程與問題。 1.安裝NFS sudo apt install nfs-kernel-server systemctl status nfs-kernel-server systemctl emable nfs-kernel-server2.創建共享目錄 sudo mkdir /home/share/ sudo chmod 775 -R /home/share/3.配置NFS…

AIGC筆記--MoE模型的簡單實現

1--MoE模型 MoE模型全稱是混合專家模型&#xff08;Mixture of Experts, MoE&#xff09;&#xff0c;其主要將多個專家神經網絡模型組合成一個更大的模型。 MoE模型的核心組成有兩部分&#xff1a;第一部分是多個專家網絡模型&#xff0c;每個專家網絡模型往往是獨立的&#x…

【UE+GIS】UE5GIS CAD或shp構建3D地形

貼合地形的矢量圖形實現方法 一、灰度圖的制作和拉伸換算1、基于高程點集實現2、基于等高線實現3、拉伸計算 二、生成地形模型的實現方案1、3Dmax導入灰度圖2、使用ArcMap/Arcpro/FME等GIS數據處理工具3、UE導入灰度圖 三、地形上疊加地形渲染效果的實現方案1、貼花2、數據渲染…

日志管理:Slf4j、Log4j、LogBack與ELK實戰指南

1.現代軟件開發中日志的重要性 在軟件開發和運維的世界里&#xff0c;日志管理是一項至關重要的技術。正確地記錄、管理和分析日志數據&#xff0c;能為系統的可靠性、可維護性和安全性帶來顯著的好處。 1.1 日志在故障排查中的作用 日志是系統活動的詳細記錄。當系統發生故…

Z字形變換 ---- 模擬

題目鏈接 題目: 分析: 題意如圖所示:如果我們按照題意, 真的實現一個矩陣, 這樣做的時間和空間復雜度很高, 所以我們可以試試看找規律, 優化一下我們觀察他們的下標: 如果找到下標的規律, 那么我們就不用創建矩陣, 就能找到最終結果的下一個字符是什么特殊情況, 當numRows 1…

讀AI未來進行式筆記01深度學習

1. AI 1.1. AI已經發展成一門涵蓋許多子領域的重要學科 1.2. 機器學習是迄今為止AI應用最成功的子領域 1.2.1. 在這個領域中&#xff0c;最大的技術突破就是深度學習 1.3. “人工智能”“機器學習”和“深度學習”的時候&#xff…

C語言編程技巧:深度挖掘與高效實踐

C語言編程技巧&#xff1a;深度挖掘與高效實踐 在編程的世界里&#xff0c;C語言以其高效、靈活和底層控制能力強等特點&#xff0c;一直備受開發者們的青睞。然而&#xff0c;要想真正掌握C語言的精髓&#xff0c;并編寫出高效、健壯的代碼&#xff0c;卻并非易事。本文將從四…

基于STM32與TB6600的機械臂項目

基于STM32與TB6600的機械臂項目是一個涉及硬件設計、軟件開發和控制算法實現的綜合項目。以下是對該項目的一個簡要介紹&#xff0c;以及一些基礎的代碼示例。 項目概述 1. 系統組成 STM32微控制器&#xff1a;作為系統的主控制器&#xff0c;負責處理傳感器數據和控制機械臂…

Pointnet學習以及對代碼的實現

由于點云不是常規數據格式&#xff0c;通常將此類數據轉換為規則的 3D 體素網格或圖像集合&#xff0c;然后再用神經網絡進行處理。數據表示轉換使生成的數據過于龐大。 PointNet是第一個直接處理原始點云的方法。只有全連接層和最大池化層&#xff0c;PointNet網絡在推理速度…

Android串口調試ADB

在Android設備上&#xff0c;通過串口&#xff08;通常指的是ADB&#xff0c;即Android Debug Bridge&#xff09;來執行dumpsys命令來檢查某個包&#xff08;例如com.android.bluetooth&#xff09;是否支持某個服務&#xff08;如A2dpSinkService&#xff09;是開發者或高級用…

深入理解 Python 迭代器與生成器:詳細指南

迭代器和生成器是 Python 中強大的特性&#xff0c;用于簡化代碼和提高效率。它們允許我們在需要時逐步計算結果&#xff0c;避免一次性加載所有數據到內存中。本文將詳細介紹 Python 迭代器和生成器的基本語法、命令、示例、應用場景、注意事項&#xff0c;并進行總結。 迭代…

Android在不同層面增加應用

1 App 應用代碼一般在開發者的項目目錄下&#xff0c;packages/apps/YourApp/&#xff0c;比如app/src/main/java目錄下 對于系統應用&#xff0c;源代碼可能位于packages/apps/目錄下&#xff0c;例如packages/apps/Settings。 用戶安裝的應用&#xff08;從Google Play或其…

代碼隨想錄--哈希表--兩數之和

題目 給定一個整數數組 nums 和一個目標值 target&#xff0c;請你在該數組中找出和為目標值的那 兩個 整數&#xff0c;并返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是&#xff0c;數組中同一個元素不能使用兩遍。 示例: 給定 nums [2, 7, 11, 15], t…