首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx & Cloudflare错误,太多的重定向

Nginx & Cloudflare错误,太多的重定向
EN

Stack Overflow用户
提问于 2022-11-17 18:31:51
回答 1查看 23关注 0票数 0

我的nginx配置有问题。我有一个使用cloudflare DNS代理记录运行的域。主站点和子域(带有portainer)已经从“让我们加密”获得ssl证书。当我想进入主站点或我的子域时,我会得到太多的重定向错误。当我在cloudflare中关闭代理选项时,一切都正常工作。我不知道在哪里找这个问题。下面是nging.conf文件:

代码语言:javascript
运行
复制
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默认站点配置文件:

代码语言:javascript
运行
复制
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
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-17 23:27:54

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

在你的云彩仪表板上

  • SSL/TLS > Overview选项卡中,使用Full (严格)
  • SSL/TLS > Edge Certificates选项卡中,启用总是使用HTTPS

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

如果需要,还可以使用请阅读本支持文章的更多内容。继续故障排除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74480442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档