# 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";
}