【问题标题】:Nginx & Cloudflare error, too many redirectionsNginx 和 Cloudflare 错误,重定向太多
【发布时间】:2022-11-18 07:27:54
【问题描述】:

我的 nginx 配置有问题。我有一个使用 cloudflare DNS 代理记录运行的域。主站点和子域(带有 portainer)已从 Let's Encrypt 获得 ssl 证书。当我想进入主站点或我的子域时,我收到太多重定向错误。当我关闭 cloudflare 中的代理选项时,一切正常。我不知道在哪里搜索问题。这是 nging.conf 文件:

http {

        # HTTP Redirect to HTTPS for my website
        server {
                listen 80;
                server_name mydomain.pl www.mydomain.pl;
                return 301 https://mydomain.pl;
        }
        
        server {
    if ($host = www.mydomain.pl) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = mydomain.pl) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


                listen 80;
                server_name mydomain.pl www.mydomain.pl;
    return 404; # managed by Certbot

}}

这是 nginx 默认站点配置文件:

server {

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;
    server_name domain.pl; # managed by Certbot

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/sub.domain.pl/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/sub.domain.pl/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}
server {
    if ($host = mydomain.pl) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80 ;
        listen [::]:80 ;
    server_name mydomain.pl;
    return 404; # managed by Certbot


}

# Redirect sub.domain.com to Portainer using nginx proxy 
server {
    server_name sub.mydomain.pl;
    location / {
        proxy_set_header Host $host;
        proxy_pass https://mydomain.pl:9443;
        proxy_redirect off;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/sub.domain.pl/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/sub.domain.pl/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = sub.mydomain.pl) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name sub.mydomain.pl;
    return 404; # managed by Certbot
}

如果有人指出我犯了错误的地方并解释如何解决这个问题,我将不胜感激

【问题讨论】:

    标签: nginx redirect dns cloudflare


    【解决方案1】:

    如果您的原始服务器已经支持 TLS,最好让 Cloudflare 处理从 HTTP 到 HTTPS 的重定向,然后将 Cloudflare 配置为在联系您的原始服务器时始终使用 HTTPS。这样,Cloudflare 和您的源服务器之间就不可能出现配置错误/冲突。

    在您的 Cloudflare 仪表板中

    • SSL/TLS > Overview标签中,使用完整(严格)
    • SSL/TLS > Edge Certificates选项卡中,启用始终使用 HTTPS

    这样,Cloudflare 代理的所有 HTTP 请求都将被 Cloudflare 重定向到 HTTPS,然后从 Cloudflare 到您的网络服务器的所有请求都将通过 HTTPS 进行。

    如果需要,您也可以read more at this Support article继续进行故障排除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多