LINUX.ORG.RU

Что надо прописать в NGinx, чтобы при наборе адреса «mysite.loc» открывался «https://mysite.loc» ?

 , , , ,


0

2

Сейчас заметил такое поведение: если в строке браузера набрать URL без указания протокола, то Nginx вместо отображения страницы сайта показывает свою дефолтную страницу:

Welcome to nginx!
If you see this page...

Я так понимаю, что нужно прописать переход на https-страницу, примерно так:
server {
  ...

  server_name mysite.loc;

  return 301 https://$host$request_uri;

Но в таком виде не работает, все равно показывается дефолтная страница Nginx.

А как правильно сделать такое перенаправление?

★★★★★

Последнее исправление: Xintrea (всего исправлений: 1)

Покажи весь конфиг. Обычно тебе нужно две секции server, для http с редиректом и основным сервером с https. Проверить перенаправление всегда можно с помощью wget, он не кеширует 3xx ответы.

lu4nik ★★★
()
Последнее исправление: lu4nik (всего исправлений: 1)

Ты весь блок покажи, зачем точки поставил?

WitcherGeralt ★★
()

Показывай полный конфиг

MrClon ★★★★★
()
Ответ на: комментарий от lu4nik

Покажи весь конфиг.

server {

	# SSL configuration
	listen 443 ssl default_server;
	listen [::]:443 ssl default_server;

	ssl on;
    ssl_certificate /etc/nginx/ssl/mysite.loc.crt;
    ssl_certificate_key /etc/nginx/ssl/mysite.loc.key;

	root /var/www/mysite/site/public;

	index index.php index.nginx-debian.html index.html index.htm;

	server_name mysite.loc;

    # Переход на URL с https, если URL в строке боаузера набран без протокола
	return 301 https://$host$request_uri;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.

		#try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php?$query_string;
	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
	
		# With php-fpm (or other unix sockets):
		fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
	}
}



Nginx, естественно, перезагружал.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Darth_Revan

Должно работать.

А может ли эта проблема возникнуть из-за самоподписанного сертификата?

То есть, был бы сертификат нормальным, NGinx сделал бы перенаправление на https. Но он видит, что ssl для https самоподписной, и не перенаправляет на https://mysite.loc, а оставляет пользователя на дефолтной странице?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Или вообще вот так, как генерирует certbot

server {
    if ($host = domain.name) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
mandala ★★★★★
()
Ответ на: комментарий от Xintrea

Убрать у тебя из конфига:

    # Переход на URL с https, если URL в строке боаузера набран без протокола
	return 301 https://$host$request_uri;

и добавить вниз с новой строки

 server {
    if ($host = mysite.loc) {
        return 301 https://$host$request_uri;
    }
mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 2)
Ответ на: комментарий от Xintrea

Да, и проверь, что и 80, и 443 порты открыты на сервере.

lu4nik ★★★
()
Ответ на: комментарий от mandala

Да, заработало. А почему не срабатывала команда без условия? Она же та же самая что и та которая условием обернута.

В условии написано if ($host = mysite.loc), так я в строке браузера так и набираю mysite.loc. Так что оно полюбому срабатывает. Но вот отдельной строкой без оборачивания в условие - переход не работает. А с условием - работает. Почему?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Потому что тебе нужно ДВА сервера. Один по https (порт 443) работает и обслуживает твой сайт. Другой по http (порт 80) и делает редиректы (его добавляет дополнительная секция server). Если ты вобьешь в браузере http://mysite.loc (или mysite.loc, если нет HTTPS Everywhere), то браузер пойдет протоколом http на 80 порт, где ничего нет.

lu4nik ★★★
()
Ответ на: комментарий от lu4nik

Потому что тебе нужно ДВА сервера

Ну это как-то скучно...
Реквестирую более нескучное решение, с учётом того, что Nginx умеет так

server {
  listen 80;
  listen 443 ssl;
...
}

zolden ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Ага, вот это похоже на правду.

Xintrea ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.