【问题标题】:Nginx keeps redirecting infinitelyNginx 不断重定向
【发布时间】:2017-05-25 13:32:02
【问题描述】:

我已按照the instructions from here 设置 nginx 以将所有非 www 请求重定向到 www,但是当我尝试访问任何页面时,我的浏览器中不断收到 ERR_TOO_MANY_REDIRECTS

我的目标是双重的:

  1. 所有没有 www 的请求都应该重定向到 www
  2. 所有非 HTTPS 请求都应重定向到 HTTPS

我的 nginx 配置如下所示:

upstream mywebsite_proxy {
  server unix:/home/deploy/mywebsite/tmp/sockets/puma.sock;
}

server {
  listen   80;
  listen   [::]:80;
  listen   443 default_server ssl;

  server_name www.mywebsite.com;

  if ($scheme = http) {
    return 301 https://$server_name$request_uri;
  }

  location / {
    proxy_pass http://mywebsite_proxy;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location ~ ^/(robots.txt|sitemap.xml.gz)/  {
    root /home/deploy/mywebsite/public;
  }
}

请注意,这里没有任何对 SSL 证书的引用。我正在使用启用了 SSL 的 Cloudflare,当我的配置如下所示时,HTTPS 似乎刚刚开始工作。非 www 到 www 和非 http 到 https 重定向显然不起作用......

upstream mywebsite_proxy {
  server unix:/home/deploy/mywebsite/tmp/sockets/puma.sock;
}

server {
  listen 80;
  listen 443;
  server_name www.mywebsite.com mywebsite.com;
  root /home/deploy/mywebsite/public;

  location / {
    proxy_pass http://mywebsite_proxy;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location ~ ^/(robots.txt|sitemap.xml.gz)/  {
    root /home/deploy/mywebsite/public;
  }
}

【问题讨论】:

    标签: ssl redirect nginx


    【解决方案1】:

    在我看来,您不需要 if 部分:

    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
      }
    

    重定向应该如下所示:

        return 301 https://$server_name$request_uri;
    

    如果您想进行永久重定向,请使用 301,该重定向将存储在您浏览器的缓存中;如果您不想永久重定向,请使用 302。此外,您可以删除 www。加入 server_name 并使用return 301 https://www.$server_name$request_uri;

    【讨论】:

      【解决方案2】:

      我在之前的一个项目中做了一些类似的事情,步骤如下:

      1. 保留默认配置“nginx.conf”。
      2. 修改/etc/nginx/sites-available/default (要点:https://gist.github.com/faizulhaque-tp/db576dc6f22c820a0e23f7a6e1c8b740

      除了非www到www,以上配置都可以。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-02
        • 2015-12-19
        • 1970-01-01
        • 1970-01-01
        • 2019-03-12
        • 2018-10-25
        • 2018-11-11
        • 2021-04-15
        相关资源
        最近更新 更多