Последние несколько недель я ищу решения для настройки конфигурации 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-адреса, который возможно но делается очень редко.