Я хочу, чтобы nginx служил прокси-сервером ssl, но для хоста: "ssl.example.com"
в то же время я хочу, чтобы nginx обслуживал веб-сайт "nginx is ok" для хоста: "ssl-check.example.com" (это всего лишь пример, пожалуйста, не предлагайте здесь никаких инструментов мониторинга)
для других хостов, указывающих на мой IP, я хочу обслуживать 404 или что-то еще.
- Меня не волнует несоответствие сертификатов - значит, SNI - это не то, что мне здесь нужно.
- Я не хочу использовать описанное как решение ловушки и использовать что-то вроде
if ($host != $server_name) {
root /var/www/errors/404
Все это на одном IP.
У меня рабочий ssl
server {
с server_name ssl.example.com - работаю как хочу.
другой ssl
server {
с server_name ssl_check.example.com - показ "nginx в порядке"
и последний сервер (также ssl) без server_name (или с "_" в качестве имени), который должен обслуживать 404, но он не работает ...
Решено
Моя конфигурация с использованием решения теперь выглядит (и работает) так:
Если этот конфиг может быть каким-либо образом опасным - не стесняйтесь, позорьте меня. Thans
Вы указываете виртуальный хост по умолчанию, используя default_server
вариант для listen
директива. Если вы не установите этот параметр, nginx выберет первый server
блок с соответствием listen
директива.
server {
listen 443 ssl default_server;
root /var/www/errors/404;
}