基本的Nginx proxy_pass配置不起作用

时间:2019-08-31 18:27:00

标签: nginx

我有这个基本的nginx配置

http {
    server {
        location / {
            proxy_pass http://localhost:8080;
        }
    }
    server {
        listen 8080;
        root /data/upl;
    }
}

我在nginx上的index.html上也有/data/upl

当我转到http://localhost时-我取回了Chrome中的HTML。

将位置匹配器从/更改为/test/并转到http://localhost/test后,我得到了chrome中nginx的错误404。

这是更新的配置:

http {
    server {
        location /test/ {
            proxy_pass http://localhost:8080;
        }
    }
    server {
        listen 8080;
        root /data/upl;
    }
}

请帮助您理解此问题(为什么它不起作用)。

1 个答案:

答案 0 :(得分:0)

我认为配置可能太基础了。您在该位置使用了正斜杠,这意味着您还需要通过使用index指令来告诉nginx查找哪种类型的文件。

文档摘录

  

如果请求以斜杠结尾,NGINX会将其视为对目录的请求,并尝试在目录中查找索引文件。 index指令定义了索引文件的名称(默认值为index.html)。继续该示例,如果请求URI为/ images / some / path /,则NGINX会提供文件/www/data/images/some/path/index.html(如果存在)。如果没有,则默认情况下NGINX返回HTTP代码404(未找到)

我不明白您为什么使用代理,似乎不需要。这是我建议使用的配置。

server {
  listen 8080;
  root /data/upl;
  index index.htm index.html;

  location /test {
  }
}

/ data / upl / test中将需要有一个index.htm或index.html文件,否则将生成404。