Nginx 重定向到代理而不是静态文件

Nginx 重定向到代理而不是静态文件

我希望 nginx 首先将 http 重定向到 https,然后检查 www 根目录中的静态文件,如果没有,则将请求传递给代理。但是,http->https 重定向后,请求会立即传递给代理。

在同一台服务器(从 nginx 看到的是 127.0.0.1)端口 8000 上,我有一个简单的 flask 应用程序,它会根据对“/”的请求返回一个字符串:

...
@app.route("/")
def root():
    return "Works!"
...

运行正常(在浏览器中检查)。

Nginx 配置是

服务器 {
    听80;
    听 [::]:80;
    服务器名称 lpch $DOMAIN www.$DOMAIN;
    返回 301 https://$host$request_uri;
}
服务器 {
    听443 ssl;
    听 [::]:443 ssl;
    服务器名称 lpch $DOMAIN www.$DOMAIN;
    ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;

    根目录/var/www/$DOMAIN/html;
    索引 index.html index.htm;

    地点 / {
      try_files $uri index.html @proxy_to_app;
    }

    位置@proxy_to_app {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header 主机 $http_host;
      代理重定向关闭;
      代理密码 http://127.0.0.1:8000;
    }
}

我究竟做错了什么?

相关内容