我希望 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; } }
我究竟做错了什么?