1

У меня настроен nginx для одного из моих доменов. Он работает как веб-интерфейс для сервера приложений Wildfly. Однажды я решил настроить среду бета-тестирования на той же машине. Поэтому я добавил еще один поддомен в конфигурацию. После перезапуска nginx перестал обслуживать первое приложение. Мои файлы конфигурации:

основной поддомен:

server {
    listen 80;
    server_name sub.example.com;
    return 301 https://$host$request_uri;
}

server {

    listen 443;
    server_name sub.example.com;

    ssl_certificate           /etc/nginx/ssl/bundle.crt;
    ssl_certificate_key       /etc/nginx/ssl/sub.example.com.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/sub.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;
    }
}

тестовый поддомен:

server {
    listen 443;
    server_name sub-test.example.com;
    return 301 http://$host$request_uri;
}

server {

    listen 80;
    server_name sub-test.example.com;


    access_log            /var/log/nginx/sub-test.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;

    }
}

Я должен добавить, что каждая из вышеперечисленных конфигураций работает как положено, когда в одиночку. Но вместе они не любят друг друга. Запрос на первый из них возвращает НЕ НАЙДЕННЫЙ статус HTTP.

Конечно, проблема может быть расположена на моем сервере Wildfly. Он настроен на обработку виртуальных хостов, и я не совсем уверен, что все в порядке. Но когда оба приложения запущены и nginx проксирует только одно из них, оно работает нормально.

Спасибо за помощь.

2 ответа2

1

Патрик, к сожалению, вы не можете установить более одного HTTPS-сервера на основе имени. Объяснения длинные, но вы можете проверить здесь некоторую незавершенную информацию и примеры (на основе Apache, понятия не имею о nginx)

0

Вы можете использовать более одного сайта https.

Технология называется SNI, или индикация имени сервера.Ссылка

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

sites.d/ | -ssl.conf | -vhost1.conf | -vhost2.conf

Затем ssl.conf содержит:

ssl_certificate /etc/ssl/certs/ssl.crt; ssl_certificate_key /etc/ssl/certs/server.key;

Другим вариантом будет использование отдельных сертификатов с разными общими именами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .