Как включить или отключить IPv6 в NGINX

NGINX – это популярный обратный прокси и веб-сервер, который имеет встроенную поддержку IPv6, что обеспечивает более широкие диапазоны адресов. Кроме того, он имеет улучшенную производительность сети по сравнению с IPv4. Не обязательно, что протокол IPv6 будет поддерживать ваша система или среда.

Поскольку IPv6 предлагает изобилие уникальных адресов, веб-серверам необходимо адаптировать и настроить свои сети для поддержки этого нового протокола.

В этой статье мы предоставим пошаговое руководство по включению и отключению IPv6 на веб-сервере NGINX.

Как настроить IPv6 на NGINX

Перед настройкой IPv6 на NGINX убедитесь, что ваш сервер и сетевая инфраструктура поддерживают IPv6, выполнив команду ip, как показано на рисунке.

ip addr show | grep inet6

Вывод:

inet6 ::1/128 scope host
	inet6 2001:0db8:85a3:8a2e:0370:7334/64 scope global temporary dynamic
	inet6 fe80::a00:27ff:fe4e:66a8/64 scope link

Эта команда получает информацию о сетевом интерфейсе и фильтрует ее для отображения только адресов IPv6. Вывод будет содержать несколько строк, но нас интересует строка, включающая термин «scope global», который указывает на глобально маршрутизируемый IPv6 адрес.

Чтобы настроить IPv6 на NGINX, необходимо обновить конфигурационный файл NGINX, расположенный по адресу /etc/nginx/nginx.conf, /etc/nginx/sites-enabled/default или /etc/nginx/conf.d/domain.conf, в зависимости от вашего дистрибутива.

sudo nano /etc/nginx/nginx.conf [main configuratin file]
sudo nano /etc/nginx/sites-enabled/default  [default virtual host file]
sudo nano /etc/nginx/conf.d/domain.conf [domain specific virtual host file]

В файле конфигурации найдите блок http, который содержит основную конфигурацию HTTP-сервера, и добавьте следующую строку для включения IPv6:

server {
	listen 80 default_server;
	listen [2001:0db8:85a3:8a2e:0370:7334]:80 default_server;
}

Эта строка указывает NGINX слушать только определенные IPv6-адреса на порту 80.

Если вы используете сервер с поддержкой HTTPS, добавьте следующую строку для включения IPv6 для HTTPS:

server {
	listen 443 default_server;
	listen [2001:0db8:85a3:8a2e:0370:7334]:443 default_server;
}

Если вы хотите, чтобы NGINX прослушивал все доступные IPv6 адреса на портах 80 и 443, добавьте следующую строку.

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

Вы также можете настроить NGINX таким образом, чтобы он не полностью запрещал протокол IPv6, а отдавал приоритет IPv4, как показано на рисунке.

server {
	listen [2001:0db8:85a3:8a2e:0370:7334]:80 ipv6only=on default_server;
}
server {
	listen [2001:0db8:85a3:8a2e:0370:7334]:443 ipv6only=on default_server;
}

Ограничивая IPv6, эта директива гарантирует, что NGINX преимущественно обрабатывает IPv4 трафик. Она допускает некоторую поддержку IPv6, хотя IPv4 по-прежнему приоритетен.

После внесения изменений в конфигурационный файл NGINX необходимо проверить и перезапустить службу NGINX, чтобы изменения вступили в силу.

sudo nginx -t
sudo systemctl restart nginx

Сокет в состоянии LISTEN для адреса IPv6 на указанном порту также может быть подтвержден с помощью команды ss. Это свидетельствует о том, что NGINX активно отслеживает указанный IPv6-адрес на предмет входящих соединений.

sudo ss -ltpn

Вывод:

State  Recv-Q Send-Q         Local Address:Port                     Peer Address:Port Process
LISTEN 0  	4096             127.0.0.53%lo:53      	                0.0.0.0:* 	users:(("systemd-resolve",pid=454,fd=14))
LISTEN 0  	128              0.0.0.0:22      	                    0.0.0.0:* 	users:(("sshd",pid=586,fd=3))
LISTEN 0  	511 	         [2001:0db8:85a3:8a2e:0370:7334]:80     [::]:* 	users:(("nginx",pid=3928,fd=6),("nginx",pid=3927,fd=6))
LISTEN 0  	128              [::]:22  

В выводе должна появиться строка с IPv6-адресом и номером порта, на что указывает строка :80. Дополнительно представлен PID (идентификатор процесса) для соответствующего процесса.

Как отключить IPv6 на NGINX

IPv6 можно просто отключить, отредактировав конфигурационный файл NGINX с помощью редактора nano.

sudo nano /etc/nginx/nginx.conf [main configuratin file]
sudo nano /etc/nginx/sites-enabled/default  [default virtual host file]
sudo nano /etc/nginx/conf.d/domain.conf [domain specific virtual host file]

Чтобы отключить IPv6, необходимо закомментировать или удалить все строки, связанные с конфигурацией IPv6. Найдите строки, которые начинаются с listen [::], listen [::]:80 или listen [::]:443. Закомментируйте эти строки, добавив # в начале каждой строки.

# listen [::]:80;
# listen [::]:443 ssl;
# listen [::]

После внесения необходимых изменений в конфигурационный файл NGINX, вы должны перезапустить службу NGINX, чтобы изменения вступили в силу.

sudo systemctl restart nginx

Для подтверждения того, что IPv6 был успешно отключен на NGINX, выполните следующую команду ss еще раз.

ss -tuln | grep nginx

Если никаких записей, связанных с адресами IPv6, не отображается, это означает, что NGINX больше не прослушивает IPv6.

Вывод

Инструкции этой статьи теперь могут быть успешно использованы для включения или отключения настройки IPv6 для вашего сервера NGINX. Хотя тестирование вашего сервера с несколькими настройками IPv4 и IPv6 настоятельно рекомендуется для обеспечения максимальной производительности сервера.

Не забудьте учесть безопасность вашего веб-сервера. Вы должны решить, следует ли при необходимости отдавать приоритет трафику IPv4.

Зарубин Иван Эксперт по Linux и Windows

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

Вдохновлен www.ubuntumint.com

Похожие статьи

Комментарии (0)