LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

技術分享:nginx 常用配置注意事項解讀

admin
2025年7月5日 10:28 本文熱度 436

今天,我們將深入探討 Nginx 的 6 個關鍵進階配置,這些細節在實際生產環境中至關重要,能顯著提升性能、安全性和靈活性。 主要配置項如下:

  1. root 與 alias 指令的本質區別

  2. 反向代理 proxy_pass 高級配置剖析

  3. try_files 的靈活應用場景

  4. 性能優化gzip壓縮和表態資源緩存

  5. Cookie 安全與行為控制

  6. 安全加固方案

下面分別介紹每一項的配置及注意事項:

一、Nginx 中 root 與 alias 指令的區別

  • root 指令

  • 工作原理:root 指令會將完整的請求路徑附加到指定的目錄后

  • 語法root /path/to/directory;

  • 示例

location /images/ {    root /data/website;}

對于請求 /images/logo.png,Nginx 會查找 /data/website/images/logo.png

  • alias 指令

  • 工作原理:alias 指令會用指定的路徑替換 location 匹配的部分

  • 語法alias /path/to/directory;

  • 示例

location /images/ {    alias /data/website/;}
對于請求 /images/logo.png,Nginx 會查找 /data/website/logo.png
注意: alias 的路徑后面必須加上  ‘/’  root后面可不加 ‘/’
二、反向代理,請參考
技術分享:Nginx 反向代理配置proxy_pass實踐

三、理解Nginx 中 try_files 指令

location / {  try_files $uri $uri/ /index.html;}

  1. $uri - 嘗試直接匹配請求的URI對應的文件

  2. $uri/ - 嘗試將URI作為目錄查找

  3. /index.html - 如果前兩者都不存在,則返回index.html

這個配置對主流流行單頁應用很重要
單頁應用的邏輯如下:

  1. 只有一個實際的HTML文件(index.html)

  2. 前端路由在客戶端處理

  3. 直接訪問路由路徑時服務器上沒有對應文件

舉個例子假如沒有這個配置,當用戶刷新非根路由(如/dashboard)時,Nginx會返回404,因為服務器上不存在/dashboard這個文件。
注意:如果前端使用的是哈希路由,可能不需要此配置,因為哈希后的內容不會發送到服務器。
四、性能優化

1. 啟用Gzip壓縮

gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Gzip 壓縮的好處

  • 顯著減少傳輸數據量

  • 文本資源(HTML/CSS/JS)通常可壓縮60-80%

  • 示例:一個100KB的JS文件壓縮后可能只有30KB

  • 加快頁面加載速度

  • 減少帶寬占用,特別是對移動用戶更有利

  • 提升首次內容渲染時間(FCP)

  • 降低服務器帶寬成本

  • 減少傳輸數據量直接降低帶寬消耗

  • 改善用戶體驗

  • 頁面加載更快,減少用戶等待時間

  • SEO優勢

  • 頁面加載速度是搜索引擎排名因素之一

2. 靜態資源緩存

location ~* \.(?:css|js|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {  expires 1y;  access_log off;  add_header Cache-Control "public";}

緩存的好處

  • 極大減少重復請求

  • 靜態資源(如圖片/CSS/JS)只需下載一次

  • 大幅提升后續訪問速度

  • 本地緩存讀取速度比網絡請求快100-1000倍

  • 減輕服務器負載

  • 減少對服務器的重復請求

  • 離線可用性

  • 緩存的資源在弱網環境下仍可訪問

  • 節省用戶流量

  • 避免重復下載相同資源

五、對Cookie的配置
當 Nginx 作為反向代理時,默認會傳遞客戶端的 Cookie 到后端服務器
server {    location / {        proxy_pass http://backend;
        # 安全傳遞Cookie        proxy_set_header Cookie $http_cookie;        proxy_pass_header Set-Cookie;
        # 修改后端Cookie屬性        proxy_cookie_domain ~^(.+)$ $host;        proxy_cookie_path / /;        proxy_cookie_flags ~ secure HttpOnly;
        # 動態添加SameSite        header_filter_by_lua_block {            if ngx.header["Set-Cookie"] then                ngx.header["Set-Cookie"] = {                    ngx.header["Set-Cookie"] .. "; SameSite=Lax"                }            end        }    }}
六、安全優化

  • 隱藏版本號

server_tokens off;

  • 限制敏感方法

if ($request_method !~ ^(GET|POST|HEAD)$) {    return 405;}

  • 防DDoS基礎

limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;location / {    limit_req zone=req_limit burst=20;}

  1. limit_req_zone 定義限流規則

    • $binary_remote_addr:以客戶端的IP地址作為限流鍵(比$remote_addr更節省內存)。

    • zone=req_limit:10m:創建名為 req_limit 的共享內存區,分配10MB空間(約可存儲16萬個IP狀態)。

    • rate=10r/s:限制每個IP的平均請求速率為每秒10個請求。

  2. limit_req 應用限流規則

    • zone=req_limit:引用之前定義的限流規則。

    • burst=20:允許突發流量超出速率限制的請求數(超出部分會進入隊列等待處理)。

  • SSL 強化

用于強化 HTTPS 連接的安全性
ssl_protocols TLSv1.2 TLSv1.3;      #僅啟用 TLSv1.2 和 TLSv1.3,禁用不安全的舊協議(如 TLSv1.0、TLSv1.1 和 SSLv3)。ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';ssl_prefer_server_ciphers on;   # 確保使用服務端配置的更安全套件ssl_session_cache shared:SSL:10m#啟用 SSL 會話緩存,減少重復握手開銷。


閱讀原文:原文鏈接


該文章在 2025/7/7 11:41:36 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
欧美日韩日本在线观看A | 日韩艳情国产在线观看 | 亚洲精品国产首次亮相在线 | 亚洲AV成人无遮挡网站在线观看 | 亚洲欧美日韩另类中文字幕组 | 一区二区三区在线观看精品视频 |