NGINX HTTP/NON-WWW 到 HTTPS 导致过多重定向

NGINX HTTP/NON-WWW 到 HTTPS 导致过多重定向

我想将所有非 https 和非 www 重定向到 301,使用https://www.example.com我在另一个线程中找到的以下配置作为可接受的答案。但这对我来说不起作用。

有效的方法:

  • https://example.com->https://www.example.com

  • http://example.com->https://www.example.com

但...

  • http://www.example.com-> 重定向太多... 使用 curl 我可以看到它总是重定向到自身...

这是我的nginx.conf

server {

    # ports
    listen 80;
    listen [::]:80;

    # domain name
    server_name example.com www.example.com;

    # Redirect all non-https requests
    rewrite ^ https://www.example.com$request_uri? permanent;
}

server {

    if ($bad_referer) {
        return 444;
    }

    if ($bad_bot) {
        return 444;
    }

    # ports
    listen [::]:443 ssl http2;
    listen 443 ssl http2;

    # domain name
    server_name example.com www.example.com;

    if ($host = 'example.com') {
      return 301 https://www.example.com$request_uri;
    }

    # ssl certificate files
    ssl_certificate /etc/ssl/certs/domain.crt;
    ssl_certificate_key /etc/ssl/private/domain.key;

    include basic.conf;
}

有任何想法吗?

更新:这变得越来越奇怪了...我试图制定一条一般规则将所有内容路由到 ssl(正如许多博客所建议的那样)......现在 www 以及非 www 版本都重定向回其自身......

server {

    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

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

我不知道如何调试这个...顺便说一句...这是一个 docker swarm 集群...如果这有帮助的话......

答案1

经过我自己测试之后,我不得不编辑我原来的答案,因为它导致了错误conflicting server name

遗憾的是,我无法告诉您为什么仍然会出现此重定向循环 - 也许错误来自您的包含。但我可以向您展示一个可行(经过测试)的配置,它可以完成您的要求:

一般来说:对于相当简单的重定向,建议使用指令return而不是redirecthttps://www.nginx.com/blog/creating-nginx-rewrite-rules/

目标:任意组合

  • 计划(httphttps
  • 和域(example.comwww.example.com

你在浏览器中输入,你将被重定向到https://www.example.com

以下是配置:

server {

listen 80;

server_name www.example.com redirecttest.de;

return 301 https://www.example.com$request_uri;

}

server {

listen 443 ssl http2;

server_name www.example.com;

root /var/www/example.com/http;

ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

}

相关内容