Nginx 是一个高性能的 HTTP 和反向代理服务器,除了基本的 Web 服务功能外,它还支持许多高级功能。以下是 Nginx 常用的一些功能及其设置方法:
1. 反向代理
反向代理是 Nginx 最常用的功能之一,用于将客户端请求转发给后端服务器,并返回处理结果。http {
limit_req_zone $binary_remote_addr zone=admin_limit:10m rate=10r/m;server {
listen 80;
server_name example.com;location /admin/ {
allow 192.168.1.0/24; # 仅允许特定网段访问
deny all; # 拒绝其他所有来源
limit_req zone=admin_limit burst=5 nodelay;
proxy_pass http://backend_admin_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;
}
}
}例子2:
server {
listen 80;
server_name yourdomain.com;# 定义图片存储路径
location /images/ {
root /path/to/local/images; # 设置本地图片存储路径
try_files $uri @minio; # 如果本地找不到图片,则转到 @minio 处理
}
location @minio {
proxy_pass http://minio-server-endpoint; # 替换为你的 MinIO 服务器地址和端口
proxy_set_header Host minio-server-endpoint; # 根据需要调整
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;
}
}
2. 负载均衡
Nginx 支持多种负载均衡算法(如轮询、最少连接、哈希等)来分配请求到多个后端服务器。
upstream backend_servers {
server backend1.example.com weight=3;
server backend2.example.com;
server backend3.example.com;
}server {
listen 80;
server_name example.com; location / {
proxy_pass http://backend_servers;
}
}
3. 缓存
可以配置 Nginx 来缓存静态内容或动态响应,以减少对后端服务器的压力。
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
}
}
4. SSL/TLS 加密
为网站启用 HTTPS 支持,确保数据传输的安全性。
server {
listen 443 ssl;
server_name example.com;ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key; location / {
proxy_pass http://backend;
}
}
5. 静态文件服务
直接从本地文件系统提供静态文件服务。
server {
listen 80;
server_name example.com; location /static/ {
alias /var/www/static/;
}
}
6. URL 重写与重定向
使用 rewrite 指令实现 URL 的重写或重定向。
server {
listen 80;
server_name old.example.com; rewrite ^/(.*)$ http://new.example.com/$1 permanent;
}
7. 访问控制
基于 IP 地址或其他条件限制访问。
location /admin/ {
allow 192.168.1.0/24; # 允许特定网段
deny all; # 拒绝所有其他来源
}
8. Gzip 压缩
启用 Gzip 压缩以减少传输的数据量。
gzip on;
gzip_types text/plain application/xml;
gzip_proxied any;
gzip_min_length 1000;
9. 日志管理
配置访问日志和错误日志的位置及格式。
access_log /var/log/nginx/access.log combined;
error_log /var/log/nginx/error.log warn;
10. 状态监控
启用 Nginx 的状态页面以便于监控性能和健康状况。
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1; # 仅允许本地访问
deny all;
}
补充: