Nginx too many redirects

I want to redirect all my http traffic to redirect to https . I am using letsencrypt . I read online that return 301 https://$server_name$request_uri; would redirect all the traffic to my website over to https but instead it results in ERR_TOO_MANY_REDIRECTS .

Everything works fine without the above mention statement, but then I have to specifically specify https in the URL. Here’s my /etc/nginx/sites-available/default file:

Where am I going wrong?

2 Answers 2

Change your config to below

Your current config redirects on both http and https to https. So it becomes a infinite loop because of the return statement. You want return statement only when connection is http. So you split it into two server blocks

i had the same problem. i found lots of questions/answers and articles about it but nothing helped. i then tried to access my site from a different browser and it worked just fine! deleting the cache from my chrome browser solved it.

So — keep in mind when you try different solutions to also clear your cache

Not the answer you’re looking for? Browse other questions tagged redirect nginx https or ask your own question.



Hot Network Questions

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.1.14.35781

Читайте также:  Just cause 3 вингсьют

Больше часа бьюсь над вопросом, перепробовал кучу всего, но всё равно не решил такую проблему с конфигом nginx.
Есть rewrite правило, отображающее файлы в браузере без расширения. Оно нормально работает.

Также есть правило для одной специальной страницы, на которой отображение аргумента тоже рерайтится из /page.php?param=arg в вид /page/arg И, видимо, оно и создает проблему: ошибка 404 вместо того, чтобы показывать заданную страницу, превращается в циклический редирект 301.

Как восстановить нормальную работу error_page 404, оставив и правило для специальной страницы? Есть решение?

  • Вопрос задан 13 окт. 2019
  • 109 просмотров

Дмитрий, много всякого в логах, потому что я как только конфиг не менял — с каждым изменением что-то записывалось. Скорее всего, к делу относятся какие-то из этих:

I am trying to rewrite the domain url that targets my site such that all domain names are rewritten to and have the following config:

in the server block but I am getting a "too many redirects" error.

1 Answer 1

Right now any and all requests are going to hit this server block:

Because: no server block has a valid server_name (therefore there will never be host name match) and this is the default_server.

Use appropriate server names

Therefore to always redirect requests hitting the server to a given hostname ensure that there is a server block explicitly for :

And redirect requests with any other host name to it:

In the above note that return 301 is used as it’s considered a better practice than an unconditional rewrite rule.