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

nginx ssl-прокси только для одного имени хоста

Я хочу, чтобы 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, но он не работает ...

Решено
Моя конфигурация с использованием решения теперь выглядит (и работает) так:

  1. сервер с "прослушиванием 443 ssl;" обслуживающий прокси
  2. сервер с "прослушиванием 443 ssl;" обслуживает "Nginx в порядке"
  3. сервер с "listen 443 ssl default_server;" и с "местонахождение / возврат 404"

Если этот конфиг может быть каким-либо образом опасным - не стесняйтесь, позорьте меня. Thans

Вы указываете виртуальный хост по умолчанию, используя default_server вариант для listen директива. Если вы не установите этот параметр, nginx выберет первый server блок с соответствием listen директива.

server {
    listen 443 ssl default_server;
    root /var/www/errors/404;
}