Linux/Nginx 重定向过多

Linux/Nginx too many redirects

我尝试了许多 nginx 配置,直到找到有效的配置。我不确定我的服务器上是否有我所有更改的某种存储记录,因为当我打开我的 web 应用程序时,我收到错误消息“重定向太多”。它具有与以前工作时相同的重定向数量,只是配置不同。谁能提供任何见解?

server {

    listen 80;
    server_name cigars-rec.com;

    location / {
        return 301 https://$host$request_uri;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

}

upstream cr2-cigar-recommender {
    server  cr2-cigar-recommender:8501;
}

server {
    listen 443 ssl;
    server_name cigars-rec.com;

    ssl_certificate /etc/letsencrypt/live/cigars-rec.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cigars-rec.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # streamlit config
    location / {
        proxy_pass http://cigars-rec.com;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }
    
    location /page1 {
        default_type "text/html";
        alias /templates/page1.html;
    }

    location /page2 {
        default_type "text/html";
        alias /templates/page2.html;
    }

    location /page3 {
        default_type "text/html";
        alias /templates/page3.html;
    }

}

在您的配置文件中,您在 80 端口的 http 服务器块中有此指令:

location / {
        return 301 https://$host/$request_uri;
}

这似乎是一个有意的 http 到 https 重定向,这可能正是您想要的。

但是你的 https 服务器块有一个 proxy_pass 告诉 nginx 建立一个到 http://cigars-rec.com/ 的 http 连接并且 return 响应返回给客户端。该 http URL 将由发出重定向的 http 服务器块提供服务。

这意味着对与该位置匹配的您网站的 http 或 https 版本的任何请求都将始终 return 重定向并导致您描述的情况。