通过nginx的代理请求不工作,错误404。

问题描述 投票:0回答:2

我的nginx配置如下

upstream backend {
  server backendserver01.example.com;
}

server
{
        listen 8097;
        listen [::]:8097;
        server_name  mynginxproxy.domain.local;

        location /
        {
                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;
                proxy_pass http://backend;
        }
}

我运行下面的curl命令。

curl -v -g -H "Accept: application/json" -H "Content-type: application/json" -H "X-API-KEY: some-guid" --URL "http://mynginxproxy.domain.local:8097/path/api/v1/getData?exported=false&component[name]=somecomponent"

我收到了一个来自nginx的404。

直接对着backendserver01.example.com运行命令完全正常,有什么办法吗?

nginx nginx-reverse-proxy nginx-config
2个回答
0
投票

这是因为你使用了不正确的配置。

server_name  _;

因为你是用的curling mynginxproxy.domain.local 这意味着你使用的是服务器名指示,比如将主机头传递给Nginx,而Nginx目前还没有配置为接受请求,在 mynginxproxy.domain.local 虚拟主机。

将此行改为。

server_name  mynginxproxy.domain.local;

删除不必要的一行 proxy_ssl_server_name on; 因为你代理的是http而不是https。

而且要确保 mynginxproxy.domain.local FQDN在Nginx主机上正确解析。


0
投票

好了,我已经找到了解决方法。

设置

proxy_set_header Host backendserver01.example.com;
proxy_set_header X-Forwarded-For $remote_addr;

解决了我的问题。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.