前言
Nginx 是一款非常流行的高性能 web 和反向代理服务器,它以其稳定性、低资源消耗以及高并发能力而闻名。
本教程中将分享一些实用的 Nginx 配置技巧,这些技巧可以帮助你优化服务器性能和管理网络请求。
1. 配置静态文件缓存
为了提高网站加载速度和降低服务器负载,对静态文件(如图片、JS 和 CSS 文件)进行缓存是一种有效的方法。以下是一个简单的配置示例:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
access_log off;
add_header Cache-Control "public";
}
这里我们设置了 expires
指令为 30 天,这意味着浏览器将缓存这些文件30天。我们还通过 access_log off;
禁用了访问日志,以减少磁盘 I/O。
2. 优化 SSL 配置
使用 SSL/TLS 不仅可以保证数据安全,还可以通过启用 HTTP/2 来提高性能。这是一个优化 SSL 配置的示例:
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /path/to/your/fullchain.pem;
ssl_certificate_key /path/to/your/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.3;
}
这里我们启用了 HTTP/2 并指定了 SSL 证书的位置。我们还设置了 SSL 会话缓存以提高性能,并明确了使用的加密套件和协议版本。
3. 配置反向代理
Nginx 常用作反向代理服务器以增强后端服务的安全性和性能。以下是反向代理的基本配置:
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
在这个配置中,所有进入 /
的请求都会被转发到 http://backend_server
。同时,我们还设置了几个 HTTP 头部,以确保后端服务可以接收到正确的客户端信息。
4. 限制请求速率
为了保护应用程序免受恶意攻击,如洪水攻击,我们可以使用 Nginx 的 limit_req
模块来限制请求速率:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location /login {
limit_req zone=one burst=5;
}
}
}
这里我们定义了一个名为 one
的请求速率限制区域,将允许的请求率设置为每秒 1 次请求。在 /login
路径下,我们应用了这个限制,并允许请求在短时间内爆发到 5 次请求。
5. 启用 Gzip 压缩
为了提高网站的响应速度和减少传输数据量,可以在 Nginx 中启用 Gzip 压缩。以下是相关的配置示例:
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_comp_level 6;
}
在这个配置中,我们启用了 Gzip 并指定了需要压缩的 MIME 类型。gzip_min_length
指令设置了最小压缩长度,这里是 10KB。我们还通过 gzip_proxied
指定了在何种代理情况下启用压缩。
6. 设置错误页面
为了增强用户体验,我们可以为服务器错误设置自定义错误页面。这样,当错误发生时,用户会看到一个更友好的通知,而不是默认的错误信息。
server {
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
error_page 500 502 503 504 /custom_50x.html;
location = /custom_50x.html {
root /usr/share/nginx/html;
internal;
}
}
这里我们为 404 和 50x 错误指定了自定义页面。internal
指令确保这些页面只能由内部重定向访问。
7. 使用地理位置阻止请求
如果需要根据用户的地理位置来允许或阻止访问某些内容,可以使用 Nginx 的 GeoIP 模块。以下是一个基础配置示例:
http {
geo $block_country {
default 0;
CN 1;
}
server {
if ($block_country) {
return 403;
}
}
}
在这个示例中,我们阻止了来自中国(国家代码 “CN”)的所有请求。default 0
意味着默认不阻止任何国家,除非明确指定。
8. 启用访问日志和错误日志
为了对网站的访问及错误进行记录和分析,我们可以在 Nginx 中配置访问日志和错误日志:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
默认情况下,Nginx 已经启用了日志记录,但你可以根据需要更改日志文件的位置和日志级别。
总结
Nginx 的配置灵活多变,通过适当的配置,可以显著提高网站的性能和安全性。以上只是一些基本的配置技巧,实际应用中你可能还需要根据具体需求调整配置。希望这些技巧能帮你更好地利用 Nginx 提升你的 web 应用。