Конфигурация Nginx продолжает генерировать цикл перенаправления при попытке перенаправить www на не www и на https

Я пытаюсь перенаправить все запросы www к моему домену на URL без www и все на https одновременно. Вот моя конфигурация nginx:

server {
    listen 80;
    server_name example.com www.example.com;

    location '/.well-known' {
      default_type "text/plain";
      root        /home/letsencrypt;
      allow all;
    }

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

server {
  listen              443 ssl http2;
  server_name         www.example.com;

  include snippets/ssl-example.com.conf;
  include snippets/ssl-params.conf;


  location '/.well-known' {
        default_type "text/plain";
        root        /home/letsencrypt;
        allow all;
  }

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

server {
  listen  443 ssl http2;
  server_name  example.com;

  access_log            /var/log/nginx/slmun.access.log;
  error_log             /var/log/nginx/slmun.error.log;

  include snippets/ssl-example.com.conf;
  include snippets/ssl-params.conf;

  location '/.well-known' {
    default_type "text/plain";
    root        /home/letsencrypt;
    allow all;
  }


  location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forward-Proto http;
    proxy_set_header X-Nginx-Proxy true;

    proxy_redirect off;
  }
}

Проблема в том, что я получаю здесь цикл перенаправления. Браузер показывает пример . com слишком много раз перенаправлял вас. . Есть идеи, что происходит?

Завиток для https://slmun.org :

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.10.3</center>
</body>
</html>

Это запись в журнале доступа:

162.158.165.25 - - [20/Mar/2017:07:50:53 +0530] "GET / HTTP/1.1" 301 185 "-" "curl/7.47.0"

Странные https-адреса также перенаправляются.

Завиток для slmun.org (это настоящий домен):

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.10.3</center>
</body>
</html>

Это запись в журнале доступа:

162.158.165.25 - - [20/Mar/2017:07:51:49 +0530] "GET / HTTP/1.1" 301 185 "-" "curl/7.47.0"

www также дает тот же результат.

0
задан 20 March 2017 в 04:58
1 ответ

В своем вопросе вы не упомянули, что используете CloudFlare. Я считаю, что проблема в CloudFlare, либо в кэшированном результате, либо в PageRule. Очистите кэш CloudFlare, и отключить любые пейджеры, пока вы делаете эту диагностику.

Следующая опция - это ваше проксированное приложение, посылающее редирект. Проверьте журналы доступа Nginx и проксированного приложения для подтверждения.

Если вам не повезло, выложите скриншоты вашей конфигурации CloudFlare и конфигурационных файлов Nginx, а также журналы проксированной конфигурации.

Вот заголовки запросов/ответов от Firefox с плагином Live HTTP Headers. Я могу подтвердить циркулярный редирект.

https://slmun.org/

GET / HTTP/1.1
Host: slmun.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101     Firefox/51.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1

Response

HTTP/2.0 301 Moved Permanently
Date: Mon, 20 Mar 2017 02:56:33 GMT
Content-Type: text/html
Set-Cookie: __cfduid=d8f2af34526d1d1beae191bf7de70440a1489978593; expires=Tue, 20-Mar-18 02:56:33 GMT; path=/; domain=.slmun.org; HttpOnly
Location: https://slmun.org/
Server: cloudflare-nginx
cf-ray: 342566200f8418f0-AKL
X-Firefox-Spdy: h2
1
ответ дан 4 December 2019 в 16:19

Теги

Похожие вопросы