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

Как настроить конфигурацию 404 nginx для хоста по умолчанию на порту 443

Последние несколько недель я ищу решения для настройки конфигурации 404 nginx для хоста по умолчанию на порту 443. И пока никакого решения.

Чтобы правильно прояснить вопрос. Возьмем в качестве примера сайт quora.com, работающий на nginx.

Теперь общедоступный IP-адрес Quora.com - 192.229.182.210, и когда вы вводите следующее, он показывает следующие результаты

http://192.229.182.210 - показывает 404 https://192.229.182.210 - Сервер может обмануть -> затем показывает 404

Подсказка - большинство других серверов, работающих на nginx, сообщает о недействительном сертификате и затем перенаправляет на свой рабочий хост. Пример - wordpress.org

Вопрос в том, следует ли использовать ssl-фрагмент в конфигурации по умолчанию для передачи 404, как показывает общедоступный https ip-адрес Quorara? Если да, было ли оно подписано самостоятельно? Если ssl не используется, как это сделать?

Моя текущая конфигурация

server {
listen 80 default_server;
listen [::]:80 default_server;

server_name _;

return 403;
}

Наконец-то нашел ответ о том, как получить приличный 404 для ip-адреса по умолчанию ssl.

Источник : Правильная настройка сервера nginx по умолчанию для https

Хотя немногие проголосовали за этот ответ, похоже, что Quora использует самоподписанный сертификат для хоста по умолчанию и показывает собственный 404. Использование следующего кода покажет 404 по умолчанию.

Установите для этого конфигурацию по умолчанию.

server {
server_name _;
listen       80  default_server;
return       404;
}


server {
listen 443 ssl;
server_name _;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
return       404;
}

Затем создайте каталог для ssl, если он не существует

sudo mkdir -p /etc/nginx/ssl

Затем создайте самоподписанный ssl для того же

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

Проверьте наличие ошибок и перезагрузите nginx, чтобы получить 404

nginx -t

sudo sytemctl reload nginx

https://192.229.182.210 показывает предупреждение о сертификате в Chrome, IE и Firefox. Возможно, вы добавили исключение, позволяющее игнорировать несоответствие сертификатов, или вы используете странно разрешающий браузер. Если вы не видите этого, очистите кеш и исключения, обновите и предоставьте снимок экрана, если это все еще происходит.

То, что я описал выше, является ожидаемым поведением, поскольку сертификаты https выдаются для доменного имени, а не IP.

Я не думаю, что можно отображать страницу, основанную на https-запросах на ваш IP, без доменного имени без предупреждения о сертификате. Для этого потребуется сертификат https для IP-адреса, который возможно но делается очень редко.