nginx 作为 API 的反向代理无法重定向完整的 url、params、body headers

nginx as a reverse proxy for API cannot redirect full url, params, body headers

我将我的节点 js API(我用 pm2 管理)放在 nginx 的反向代理后面,这里没问题。

但是,如果我发送任何请求,它就会变成“/”上的 GET。

我如何告诉 nginx 转发完整的 url、请求类型(PUT、OPTIONS、DELETE...)、请求参数和请求主体?

这是我的简单 nginx 配置。

server {
    listen      80;
    listen [::]:80;
    server_name api-prod.mysite.com www.api-prod.mysite.com localhost;

    location / {
        proxy_pass http://127.0.0.1:3111;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

你的 nginx 配置看起来不错,除了你应该使用 proxy_http_versionproxy_cache_bypass 因为有时(取决于版本)Nginx 和 nodejs 使用不同的 HTTP 版本。

以下配置对我来说工作正常

server {
    listen 80;
    server_name arifjaunpur.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}