nginx proxy_pass 404错误,don';我不明白为什么

nginx proxy_pass 404错误,don';我不明白为什么,nginx,Nginx,我正试图将所有对/api的调用传递给我的web服务,但通过以下配置,我一直得到404。按预期调用/返回index.html。有人知道为什么吗 upstream backend{ server localhost:8080; } server { location /api { proxy_pass http://backend; } location / { root /html/dir; } } 更多信息请点击这

我正试图将所有对/api的调用传递给我的web服务,但通过以下配置,我一直得到404。按预期调用/返回index.html。有人知道为什么吗

upstream backend{
    server localhost:8080;
}

 server {

    location /api {
        proxy_pass http://backend;
    }

    location / {
        root /html/dir;
    }
}
更多信息请点击这里 这个

应该是这样

location /api/ {
    proxy_pass http://backend/;
}

出于某种原因,Nginx中的proxy_-pass在传递到上游之前会剪切头“Host”,默认服务器会捕获请求,甚至proxy_-header_-pass也没有帮助,所以我必须显式设置它:

location / {
    proxy_set_header Host $host;
    proxy_pass  http://backend;
}

我忘了监听端口80,修复了它

nginx配置的“http”部分位于:/etc/nginx/nginx.conf,如下所示:

http {
    server {
        listen 192.111.111.11:80;
        location /path1/ {
            proxy_pass http://127.0.0.1:3000/path1/
        }
    }
}
现在,访问

将获得访问的结果

注:
用上面的IP地址替换192.111.111.11。

运行“ifconfig”命令,“inet addr”部分将给出您的IP地址

,只是想提醒其他人,代理传递url后的斜杠(backend*/*)非常重要

如果配置为

location /api/ {
    proxy_pass http://backend;
}
location /api/ {
    proxy_pass http://backend/;
}
您可以访问
http://abc.xyz/api/endpoint
,您将被定向到
http://backend/api/endpoint

如果配置为

location /api/ {
    proxy_pass http://backend;
}
location /api/ {
    proxy_pass http://backend/;
}
您可以访问
http://abc.xyz/api/endpoint
,您将被定向到
http://backend/endpoint

这就是区别


有关更多信息,请参阅:

请检查是否已从
站点启用
文件夹中删除
default.conf
文件。 如果您使用的是基于debian的ubuntu系统,请运行该命令

sudo rm /etc/nginx/sites-enabled/default

它对我有效。

后端服务器上的位置可用吗?是的,直接呼叫8080上的Web服务可以正常工作是nginx还是响应404的Web服务?我对问题进行了编辑,以获取更多信息,似乎可以解决问题,但是解释一下这会有什么不同就好了。这并不能解决我的问题。事实上,这让情况变得更糟,并且在chrome.0xAffe中给了我一个
ERR\u TOO\u许多重定向
——请注意路径和代理传递url的and处的斜杠。太多的重定向有时会发生,如果你错过了一个slashesoh哇。我让它在其他后端不使用尾随斜杠的情况下工作,但这一个出于某种原因需要它。那么,这一削减到底有什么意义呢?我从来没有想到这是个问题。你救了我,谢谢你:D