Назад | Перейти на главную страницу

Перенаправление с порта 80 на 443 с nginx и несколькими серверами

Для начала, я немного новичок в nginx и немного заблудился ... К сожалению, я не нашел никакого решения для этого, так что вот моя проблема. Если это дубликат уже существующего вопроса, прошу прощения, и я был бы очень рад увидеть ответ.

Я создаю свой самый первый сервер nginx, и у меня есть два доменных имени, у одного из них много поддоменов, и я хочу установить перенаправление SSL для всех них. Проблема в том, что он работает только один раз с прослушиванием IPv6 (здесь, в конфигурации по умолчанию), и nginx не запускается, если я помещаю ту же конфигурацию в другие поддомены (каждый поддомен имеет свой собственный файл конфигурации сервера со своим собственным 80 → 443 перенаправление сервера).

server {
listen 443;
listen [::]:443;

## All the config and stuff

}

server {
listen      80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name www.mydomainna.me mydomainna.me;
rewrite     ^   https://$server_name$request_uri? permanent;
}

Это файл конфигурации по умолчанию, и он работает как шарм.

Однако и это то, что меня беспокоит, заключается в том, что в этой точно такой же конфигурации (за исключением default_server) для каждого отдельного поддомена и моего второго имени домена я должен удалить IPv6 или nginx, которые не хотят запускаться.

server {
listen 443;
listen [::]:443;

## All the config and stuff

}

server {
listen      80;
server_name subdomain.mydomainna.me;
rewrite     ^   https://$server_name$request_uri? permanent;
}

Итак, мой вопрос: как я могу сказать, что нужно слушать IPv6 для всех моих других файлов конфигурации?

Прошу прощения, если я не объяснил свой вопрос адекватным образом, и если у кого-то из вас есть решение, спасибо.

В соответствии с эта страница строка ниже указывает Nginx прослушивать порт 80 как для IP4, так и для IP6.

listen [::]:80 default_server;

У вас есть две директивы, говорящие Nginx о прослушивании порта 443, поэтому вы получаете дублирующееся сообщение прослушивания. Просто удалите первую строку ниже, и она должна работать.

listen 443;
listen [::]:443;

Обратите внимание, что я ничего не знал о Nginx IP6, пока не провел 2 минуты в Google. Это решение было обнаружено в результате очень небольшого количества исследований.