Nginx HTTPS proxy_pass 每个路径

Nginx HTTPS proxy_pass every path

我正在尝试使用 nginx 和 cloudflare 设置 https。我使用 cloudflare 生成了证书和密钥并将它们添加到我的 nginx 配置中(见下文)。

server {
    listen 443 ssl;
    server_name <URL_HIDDEN>;

    ssl_certificate /etc/nginx/own-certs/server.crt;
    ssl_certificate_key /etc/nginx/own-certs/server.key;

    location / {
        proxy_pass http://localhost:8082;
        proxy_http_version 1.1;
        proxy_set_header UPgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

问题:只有主页有效 (/)。 当转到 any 其他页面(如 /favicon.ico)时,我在 30 秒后收到 504 错误。使用特定端口和相同路径 (http://localhost:8082/favicon.ico) 时,一切正常。当我也删除 ssl 部分时一切正常。

这不是 nginx 超时问题,因为我在使用本地主机时会在 5 毫秒内收到响应 URL。

  1. 更改 nginx 配置(如果您已经启用“始终 https”,则也有必要):
server {
    listen 80; # ADD THIS

    listen 443 ssl;
    server_name <URL_HIDDEN>;

    ssl_certificate /etc/nginx/own-certs/server.crt;
    ssl_certificate_key /etc/nginx/own-certs/server.key;

    location / {
        proxy_pass http://localhost:8082;
        proxy_http_version 1.1;
        proxy_set_header UPgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. 设置 cloudflare 设置:

  2. 启用始终使用 https: