五十五、【Linux系統nginx服務】nginx安裝、用戶認證、https實現

一、Nginx 核心功能全景圖

Nginx核心功能
靜態內容服務
反向代理
負載均衡
安全防護
性能優化
高效文件傳輸
緩存控制
gzip壓縮
隱藏后端
請求轉發
WebSocket支持
輪詢
權重分配
IP哈希
SSL/TLS
訪問控制
防火墻
連接復用
緩存加速
HTTP/2

二、核心功能詳解

靜態內容服務優化矩陣

配置指令功能描述最佳實踐性能影響
root網站根目錄使用SSD存儲
expires瀏覽器緩存靜態資源設置長期緩存極高
gzip壓縮傳輸對文本類型啟用壓縮
sendfile零拷貝傳輸啟用sendfile on極高
tcp_nopushTCP優化與sendfile搭配使用
open_file_cache文件描述符緩存open_file_cache max=1000

負載均衡策略對比

策略類型配置指令工作原理適用場景缺點
輪詢round-robin順序分配請求默認均衡策略不考慮服務器負載
權重輪詢weight=3按權重比例分配服務器性能不均靜態配置
IP哈希ip_hash相同IP固定后端會話保持需求擴展性差
最少連接least_conn選擇連接最少長連接服務計算開銷大
響應時間fair (第三方)最快響應優先性能敏感服務需額外模塊

Nginx 功能概述

Nginx 是高性能的 Web 服務器和反向代理服務器,主要功能包括:

  1. 靜態內容服務:高效處理 HTML、CSS、JS 等靜態文件
  2. 反向代理:將客戶端請求轉發到后端應用服務器
  3. 負載均衡:在多臺服務器間分配請求流量
  4. SSL/TLS 終止:處理 HTTPS 加密連接
  5. 訪問控制:基于 IP、用戶認證等機制限制訪問

功能作用詳解

1. Nginx 核心功能

靜態內容服務

server {root /var/www/html;  # 網站根目錄index index.html;    # 默認首頁
}
  • 支持高效靜態文件處理
  • 支持 gzip 壓縮減少傳輸量
  • 支持瀏覽器緩存控制

反向代理配置

location /app {proxy_pass http://backend_server;proxy_set_header Host $host;
}
  • 隱藏后端服務器信息
  • 支持負載均衡到多個后端
  • 支持 WebSocket 代理

2. 訪問控制

基礎認證

auth_basic "Restricted";
auth_basic_user_file /path/to/htpasswd;
  • 保護敏感目錄
  • 支持多用戶管理
  • 密碼加密存儲(bcrypt)

IP 訪問控制

location /admin {allow 192.168.1.0/24;deny all;
}
  • 按網絡范圍限制訪問
  • 支持動態 IP 黑白名單
  • 可與認證結合使用

3. HTTPS 安全配置

證書管理

ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
  • 支持 RSA/ECC 證書
  • 支持 OCSP Stapling
  • 支持證書鏈配置

安全增強

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
  • 禁用不安全協議(SSLv3, TLSv1.0)
  • 啟用前向保密(Perfect Forward Secrecy)
  • 啟用 HSTS 強制 HTTPS

4. 性能優化

緩存配置

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
location / {proxy_cache my_cache;proxy_cache_valid 200 1h;
}
  • 減少后端服務器負載
  • 加速靜態內容訪問
  • 支持緩存清理接口

連接優化

keepalive_timeout 65;
keepalive_requests 100;
gzip on;
gzip_types text/plain application/json;
  • 減少 TCP 連接開銷
  • 壓縮傳輸內容
  • 支持 HTTP/2 協議

5. 日志與監控

分析需求awk命令功能描述輸出示例
狀態碼統計awk '{print $9}'sortuniq -c
流量IP排名awk '{print $1}'sortuniq -c
請求URL統計`awk ‘{print $7}’sortuniq -c
響應時間分析awk 'NF > 1 {print 7, $NF}'sort -k2nr慢請求分析
流量時間分布awk '{print $4}'cut -d: -f1uniq -c

訪問日志

log_format main '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent';
access_log /var/log/nginx/access.log main;
  • 自定義日志格式
  • 支持 JSON 格式日志
  • 實時流量監控

命令總結表格

演示命令功能描述關鍵參數
yum install nginx安裝 Nginx
systemctl start nginx啟動 Nginx 服務
nginx -t測試配置文件語法
nginx -s reload重載配置文件
htpasswd -c /path/to/file user創建密碼文件-c 創建新文件
htpasswd /path/to/file user添加用戶
openssl req -x509 -newkey rsa:2048生成自簽名證書-x509 X.509證書格式
curl -u user:password URL帶認證訪問-u 用戶名密碼
curl -k https://URL忽略證書驗證-k 不驗證證書

一、Nginx 安裝與基本配置

1. 安裝 Nginx

# 添加EPEL倉庫
[root@localhost ~]# yum install epel-release -y# 安裝Nginx
[root@localhost ~]# yum install nginx -y# 啟動并設置開機自啟
[root@localhost ~]# systemctl start nginx
[root@localhost ~]# systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service

2. 驗證安裝

# 檢查服務狀態
[root@localhost ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)Active: active (running) since Mon 2025-07-21 15:30:05 CST; 5s ago# 測試訪問
[root@localhost ~]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.20.1

3. 基本配置

# 創建測試站點目錄
[root@localhost ~]# mkdir -p /var/www/site1
[root@localhost ~]# echo "Site 1 Home" > /var/www/site1/index.html# 創建站點配置文件
[root@localhost ~]# vi /etc/nginx/conf.d/site1.conf
server {listen 80;server_name site1.localhost;root /var/www/site1;index index.html;
}# 重載配置
[root@localhost ~]# nginx -t && systemctl reload nginx
nginx: configuration file /etc/nginx/nginx.conf test is successful

二、用戶認證配置

1. 創建密碼文件

# 安裝密碼工具
[root@localhost ~]# yum install httpd-tools -y# 創建認證用戶
[root@localhost ~]# htpasswd -c /etc/nginx/auth_users admin
New password: 
Re-type new password: 
Adding password for user admin# 添加第二個用戶
[root@localhost ~]# htpasswd /etc/nginx/auth_users user

2. 配置認證

# 編輯站點配置
[root@localhost ~]# vi /etc/nginx/conf.d/site1.conf
server {listen 80;server_name site1.localhost;root /var/www/site1;index index.html;location /private {auth_basic "Restricted Area";auth_basic_user_file /etc/nginx/auth_users;}
}# 重載配置
[root@localhost ~]# nginx -s reload

3. 測試訪問

# 嘗試訪問受保護區域
[root@localhost ~]# curl http://site1.localhost/private
HTTP/1.1 401 Unauthorized
Server: nginx/1.20.1
WWW-Authenticate: Basic realm="Restricted Area"# 使用認證訪問
[root@localhost ~]# curl -u admin:password http://site1.localhost/private
Site 1 Private Area

三、HTTPS 配置

1. 生成自簽名證書

# 創建證書目錄
[root@localhost ~]# mkdir /etc/nginx/ssl
[root@localhost ~]# cd /etc/nginx/ssl# 生成私鑰和證書
[root@localhost ssl]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout site1.key -out site1.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Localhost/CN=site1.localhost"

2. 配置 HTTPS 站點

# 編輯配置文件
[root@localhost ~]# vi /etc/nginx/conf.d/site1.conf
server {listen 443 ssl;server_name site1.localhost;root /var/www/site1;index index.html;ssl_certificate /etc/nginx/ssl/site1.crt;ssl_certificate_key /etc/nginx/ssl/site1.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;
}# HTTP重定向到HTTPS
server {listen 80;server_name site1.localhost;return 301 https://$host$request_uri;
}# 重載配置
[root@localhost ~]# nginx -s reload

3. 測試 HTTPS

# 跳過證書驗證測試
[root@localhost ~]# curl -k https://site1.localhost
Site 1 Home# 查看證書詳情
[root@localhost ~]# openssl s_client -connect site1.localhost:443 -showcerts

學習進階路徑

基礎配置
安全加固
性能優化
高可用架構
動態模塊
源碼開發

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

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

相關文章

AtCoder Beginner Contest 418

文章目錄A Im a teapotB Youre a teapotC FlushD XNOR OperationE TrapeziumF Were teapotsG Binary OperationAtCoder Beginner Contest 418A I’m a teapot Takahashi is a teapot. Since he is a teapot, he will gladly accept tea, but will refuse any other liquid. Det…

多級緩存詳解

多級緩存 傳統緩存: 傳統緩存策略一般是請求到達Tomcat后,先查詢Redis,如果未命中則查詢數據庫。 這種模式下請求一定要經過Tomcat處理,Tomcat的性能就成為了整個系統的瓶頸;并且Redis的緩存也有過期時間,一…

接口自動化-JSON Schema

目錄 1.介紹 2.安裝 3.使用 3.1type關鍵字 3.2最大值最小值 3.2.1minimum 、 maximum 3.2.2 exclusiveMinimum 、exclusiveMaximum 3.3字符串特殊校驗 3.4數據約束 3.5對象約束 3.6必須屬性 3.7依賴關系 4.總結 1.介紹 JSON Schema 是一個用來定義和校驗 JSON 的…

前端技術架構設計文檔(Vue2+Antd+Sass)

前端技術架構設計文檔(Vue2AntdSass) 文檔信息項目名稱前端系統(基于 Vue2 技術棧)技術棧核心Vue2 Ant Design Vue Sass版本號V1.0.0技術棧核心Vue2 Ant Design Vue Sass編制日期2025-08-071. 技術棧選型 1.1 核心技術框架類別…

【設計模式】抽象工廠模式 (工具(Kit)模式)

抽象工廠模式(Abstract Factory Pattern)詳解一、抽象工廠模式簡介 抽象工廠模式(Abstract Factory Pattern) 是一種 創建型設計模式(對象創建型模式),它提供了一種創建一系列相關或相互依賴對象…

Android初學者系統開發學習路線參考

Android初學者系統開發學習路線參考 文章目錄Android初學者系統開發學習路線參考一、前言二、Android初學的學習計劃第一階段(一個月)UI相關學習:開發環境與 UI 基礎,第一周:UI 控件與布局進階,第二周&…

擴散LLM推理新范式:打破生成長度限制,實現動態自適應調節

隨著 Gemini-Diffusion,Seed-Diffusion 等擴散大語言模型(DLLM)的發布,這一領域成為了工業界和學術界的熱門方向。但是,當前 DLLM 存在著在推理時必須采用預設固定長度的限制,對于不同任務都需要專門調整才…

【ee類保研面試】其他類---計算機網絡

25保研er,希望將自己的面試復習分享出來,供大家參考 part0—英語類 part1—通信類 part2—信號類 part3—高數類 part100—self項目準備 文章目錄計算機網絡知識點大全**計算機網絡知識點總結**一、五層協議模型二、OSI七層模型補充三、TCP 與 UDP 及區別…

Python-機器學習(一)——特征工程

目錄 特征工程 一、特征提取 1、字典特征提取 2、文本特征提取 2.1 英文文本提取 2.2 中文文本提取 3、TF-IDF文本特征詞的重要程度特征提取 二、無量綱化-預處理 1 MinMaxScaler 歸一化 2 normalize歸一化 3 StandardScaler 標準化 三、特征降維 1、特征選擇 1.…

談談SQL計算存儲引擎中的索引和計算

背景 最近在這家公司做了一些事情,做的事情和以往的工作不太一樣,不一樣的點呢就是 之前我主要的工作是關注計算這方面,因為數據量大,研究的是怎么加速查詢,怎么研究規則去優化,怎么去解規則的bug等等。因為…

vscode.window.activeTextEditor 獲取不到 png 圖片路徑問題

vscode 的 extensions 插件開發時用 vscode.window.activeTextEditor?.document.uri 獲取不到編輯器打開的圖片路徑,文檔路徑可以獲取到。個人猜測因為圖片不能編輯,所以沒有 activeTextEditor 屬性吧。解決辦法:巧用右鍵獲取路徑和相對的路…

Java 大視界 -- Java 大數據在智能醫療手術機器人操作數據記錄與性能評估中的應用(390)

Java 大視界 -- Java 大數據在智能醫療手術機器人操作數據記錄與性能評估中的應用(390)引言:正文:一、傳統手術機器人的 “黑箱困境”:記不全、算不清、追不到1.1 設備與臨床的 “斷層”1.1.1 數據記錄 “太粗放”1.1.…

C++的結構體指針

結構體變量和結構體指針的區別特性結構體變量結構體指針存儲內容結構體的實際數據內存地址內存開銷結構體總大小固定4/8字節(指針大小)成員訪問運算符.->函數傳參時的行為值拷貝(新副本)地址傳遞(操作原數據&#x…

pdf文件轉word免費使用幾個工具

在線工具(無需安裝) Smallpdf ? 核心功能: 網頁端直接操作,支持 PDF 與 Word 格式互轉 免費用戶每日限 2 次轉換(免注冊) 自動清除服務器文件,確保隱私安全 🔗 訪問鏈接&#xff1a…

Vue3 組件化開發

文章目錄前言組件化開發底部菜單 TabMenu父子組件相互傳數據父傳子:自定義屬性子傳父:自定義事件父子組件互傳案例插槽 slot多個插槽總結組件化開發總結Vue組件的基本組成子組件使用的三個步驟父子組件相互傳遞數據前言 提示:這里可以添加本…

服務器硬件電路設計之I2C問答(二):I2C總線的傳輸速率與上拉電阻有什么關系?

I2C 總線傳輸速率與上拉電阻關系密切。上拉電阻阻值決定總線電平切換速度:電阻越小,充放電電流越大,信號邊沿更陡,支持更高速率(如 400kHz 快速模式);電阻過大則切換慢,限制速率&…

大語言模型提示工程與應用:LLMs文本生成與數據標注實踐

提示詞應用實踐 學習目標 本課程通過LLMs生成情感分析樣本和標注葡萄9品鑒數據,展示了其文本生成和數據標注能力。同時,利用PAL模型解決日期計算問題,學習了LLMs與編程運行時結合實現復雜推理的方法,為自然語言處理應用提供了實…

node.js 零基礎入門

Node.js 零 基礎入門與核心語法 適用對象:完全沒接觸過 Node.js 的同學 目標:從 0 到能寫 CLI、小型 HTTP 服務、文件腳本、調用系統/網絡資源 目錄 什么是 Node.js安裝與運行運行腳本與 REPL模塊體系:CommonJS 與 ES Modules基礎語法在 Node…

《Day3-PyTorch 自動微分入門:從計算圖到梯度下降的實踐指南》

八、自動微分自動微分模塊torch.autograd負責自動計算張量操作的梯度,具有自動求導功能。自動微分模塊是構成神經網絡訓練的必要模塊,可以實現網絡權重參數的更新,使得反向傳播算法的實現變得簡單而高效。1. 基礎概念張量Torch中一切皆為張量…

apache cgi測試

test.cgi #!/bin/sh echo "Content-type: text/html" echo "" echo "<h1>Hello from a Mac CGI script!</h1>" echo "<p>Current time is: $(date)</p>"?% 放置目錄 /opt/homebrew/Cellar/mapserver/8.4.0_1…