【问题标题】:Nginx proxy overrides default HTML filesNginx 代理覆盖默认 HTML 文件
【发布时间】:2020-03-19 11:35:03
【问题描述】:

我正在尝试使用 docker-compose 设置代理,效果很好。

但是。

我将代理托管在一个“/”端点上,这似乎覆盖了我在 nginx 根文件夹中的默认 html 文件。代理服务器只有一个 url 为“/login”的端点

如何查看我的 index.html?我可以覆盖代理,如果某个文件存在,然后显示该文件吗?

希望你能理解

Nginx 配置文件:

server {
    listen 80;
    server_name localhost;


                index index.html;
                root  /var/www/;

    location / {
        proxy_pass http://flask-app:5000/;
        proxy_set_header Host "localhost";
    }
}

PS:如果我删除代理,我可以看到 HTML 文件就好了。

编辑

我试过了:

server {
    listen 80;
    server_name localhost;

    index index.html;
    root  /var/www/;

    location / {
        try_files $uri $uri/ @proxy;
    }
    location @proxy {
        proxy_pass http://flask-app:5000/;
    }

}

这是我设想的实现方式吗?

我在启动时收到此错误:

“proxy_pass”不能在正则表达式给出的位置、命名位置、“if”语句或/etc/nginx/conf.d/default.conf:12中的“limit_except”块中包含URI部分

nginx | nginx:[emerg]“proxy_pass”不能在正则表达式给出的位置、命名位置、“if”语句或/etc/nginx/conf.d/default.conf中的“limit_except”块中包含URI部分:12

【问题讨论】:

  • 试试this answer
  • 它似乎不起作用,请检查我的编辑答案,如果你知道什么是错的,那就太好了
  • proxy_pass 语句中删除结尾的/

标签: nginx proxy


【解决方案1】:

我最终在配置文件中这样做了:

server {
    listen 80;
    server_name localhost;

    index index.html;
    root  /var/www/;

    location / {
        try_files $uri $uri/ @proxy;
    }
    location @proxy {
        proxy_pass http://flask-app:5000/;
    }

}

感谢理查德·史密斯

【讨论】:

    猜你喜欢
    • 2014-07-21
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多