我们可以在proxy_pass之后放置proxy_set_header X-Forwarded-For吗

时间:2019-09-17 13:18:56

标签: nginx nginx-reverse-proxy

我在容器化应用程序中使用nginx作为反向代理。我遇到一个问题,当我添加proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;时,我的部署无法正常工作。

这是我的nginx.conf文件中的位置块的一部分。

location @app {
      proxy_pass http://127.0.0.1:3000;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
      proxy_set_header X-Real-IP $remote_addr;
    }

但是当我将$proxy_add_x_forwarded_for替换为http_x_forwarded_for时,部署工作正常,但是我无法传递真实的客户端IP。

有人可以确认这在语法上是否正确,我们可以在 proxy_pass 之后添加proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;吗?

1 个答案:

答案 0 :(得分:0)

我可以确认

proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

是正确的。

我正在运行位置栏:

location / {
    proxy_pass http://127.0.0.1:3333;
    proxy_http_version 1.1;
    proxy_cache_bypass $http_upgrade;

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    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;
    proxy_set_header X-Forwarded-Host  $host;
    proxy_set_header X-Forwarded-Port  $server_port;
}