LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

技术分享:nginx 常用配置注意事项解读

admin
2025年7月5日 10:28 本文热度 41

今天,我们将深入探讨 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