技术分享:nginx 常用配置注意事项解读
|
admin
2025年7月5日 10:28
本文热度 43
|
今天,我们将深入探讨 Nginx 的 6 个关键进阶配置,这些细节在实际生产环境中至关重要,能显著提升性能、安全性和灵活性。 主要配置项如下:
root
与 alias
指令的本质区别
反向代理 proxy_pass 高级配置剖析
try_files 的灵活应用场景
性能优化gzip压缩和表态资源缓存
Cookie 安全与行为控制
安全加固方案
下面分别介绍每一项的配置及注意事项:
一、Nginx 中 root 与 alias 指令的区别
location /images/ {
root /data/website;
}
对于请求 /images/logo.png
,Nginx 会查找 /data/website/images/logo.png
location /images/ {
alias /data/website/;
}
对于请求 /images/logo.png
,Nginx 会查找 /data/website/logo.png
注意: alias 的路径后面必须加上 ‘/’ root后面可不加 ‘/’
三、理解Nginx 中 try_files 指令
location / {
try_files $uri $uri/ /index.html;
}
$uri
- 尝试直接匹配请求的URI对应的文件
$uri/
- 尝试将URI作为目录查找
/index.html
- 如果前两者都不存在,则返回index.html
只有一个实际的HTML文件(index.html)
前端路由在客户端处理
直接访问路由路径时服务器上没有对应文件
举个例子假如没有这个配置,当用户刷新非根路由(如/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 压缩的好处
减少带宽占用,特别是对移动用户更有利
提升首次内容渲染时间(FCP)
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";
}
缓存的好处
当 Nginx 作为反向代理时,默认会传递客户端的 Cookie 到后端服务器server {
location / {
proxy_pass http://backend;
proxy_set_header Cookie $http_cookie;
proxy_pass_header Set-Cookie;
proxy_cookie_domain ~^(.+)$ $host;
proxy_cookie_path / /;
proxy_cookie_flags ~ secure HttpOnly;
header_filter_by_lua_block {
if ngx.header["Set-Cookie"] then
ngx.header["Set-Cookie"] = {
ngx.header["Set-Cookie"] .. "; SameSite=Lax"
}
end
}
}
}
if ($request_method !~ ^(GET|POST|HEAD)$) {
return 405;
}
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
location / {
limit_req zone=req_limit burst=20;
}
limit_req_zone
定义限流规则
$binary_remote_addr
:以客户端的IP地址作为限流键(比$remote_addr
更节省内存)。
zone=req_limit:10m
:创建名为 req_limit
的共享内存区,分配10MB空间(约可存储16万个IP状态)。
rate=10r/s
:限制每个IP的平均请求速率为每秒10个请求。
limit_req
应用限流规则
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
阅读原文:原文链接
该文章在 2025/7/7 11:41:36 编辑过