# 1.Nginx 反向代理
server { | |
listen 80; | |
server_name domain.com; | |
# 前端静态资源 | |
location / { | |
root /usr/share/nginx/html; | |
index index.html; | |
try_files $uri $uri/ /index.html; | |
} | |
# 代理上传文件请求 | |
location ~* ^/upload { | |
proxy_pass http://localhost:5005; | |
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. 配置解析
# location ~\* ^/upload
~* 表示不区分大小写的正则匹配
匹配所有 /upload 或 /Upload 开头的请求
# proxy_pass
直接指向后端地址,不加 /upload 后缀
这样会保留原始请求路径
# proxy_set_header
传递必要的请求头信息
确保后端能获取到真实的客户端信息
# 3. 高级配置选项
# 路径重写
如果后端接口路径与前端的路径不一致,可以使用 rewrite 规则:
location ~* ^/upload { | |
rewrite ^/upload/(.*) /api/upload/$1 break; | |
proxy_pass http://localhost:5005; | |
} |
# 负载均衡
如果后端有多台服务器:
upstream backend { | |
server 192.168.1.101:5005; | |
server 192.168.1.102:5005; | |
} | |
location ~* ^/upload { | |
proxy_pass http://backend; | |
} |
# 静态资源缓存
对图片等静态资源启用缓存:
location ~* ^/upload { | |
proxy_pass http://localhost:5005; | |
proxy_cache my_cache; | |
proxy_cache_valid 200 304 1h; | |
proxy_cache_key "$scheme$request_uri"; | |
} |