>我有以下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 运行命令完全可以正常工作。 对此有什么想法吗?
那是因为你使用了不正确的配置:
server_name _;
因为您正在卷曲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 主机上正确解析。
好的,我已经找到了解决方案。
设置
proxy_set_header Host backendserver01.example.com;
proxy_set_header X-Forwarded-For $remote_addr;
解决了我的问题。