https субдомена перенаправляет к основному домену - certbot на nginx

Я выполняю nginx и хотел бы попросить, чтобы Вы помогли в объяснении, как настроить корректную конфигурацию. Я не эксперт обслуживания сервера и хотел бы постараться не неправильно конфигурировать рабочие сайты.

Ниже извлечения nginx конфигурации (первая часть думают релевантные):

server {

    server_name www.sub.example.com;
    return 301 $scheme://sub.example.com$request_uri;
}

server {

    listen 7000;
    server_name example.com;
...

    #listen 443 ssl; # managed by Certbot
    #ssl_certificate /etc/letsencrypt/live/nifty.works/fullchain.pem; # managed by Certbot
    #ssl_certificate_key /etc/letsencrypt/live/nifty.works/privkey.pem; # managed by Certbot
    #include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    #ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

and a proxy server like:


# Virtualhost/server configuration
server {
    listen  80;
    server_name sub.example.com;

..

}

Я использую certbot, и я помню, что пытался настроить автоматически сертификат, но имел проблему, я успешно выполнился для установки правильно сертификата SSL для основного сайта, если я вспоминаю хорошо, с помощью Wildcard-сертификата.

Сертификат вчера истек, я возобновил его помогающий мне с:

certbot renewal

https://certbot.eff.org/lets-encrypt/ubuntuxenial-nginx

и видьте, что это работает хорошо с основным сайтом.

Однако с sub сайтами, https://sub.example.com точки отобразят сайт основного https://example.com (отметьте, это не перенаправление), в то время как с http http://sub.example.com отображает корректный сайт.

С sudo certbot certonly --nginx Я вижу список субдоменов для активации https для.

Перед вмешательством я хотел бы спросить Вас:

Можете можно ли помочь проинформировать меня в установке корректной конфигурации для SSL также для субдоменов?

Обратите внимание на то, что все субдомены используют API (главным образом ДОБИРАЮТСЯ, некоторые POST): Я обеспокоен повреждением сайта (бэкенд находится в Python фляги, и возможно не хотите настраивать пользовательские учетные данные - это - просто открытый сайт с несколькими плагинами доли от socials).

0
задан 31 March 2020 в 00:32

1 ответ

Это - полностью отказ конфигурации NGINX, и это ведет себя Как Настроенное certbot / самостоятельно.

Когда NGINX server раздел слушает на порте, если это будет единственный сервис, слушающий на том порте, то это станет блоком сервера по умолчанию для соответствия на том порте. Это Дизайном.

Вам будет нужен отдельный участок в Вашей конфигурации для Вашего субдомена с действительной конфигурацией HTTPS и сертификатом на ней для выполнения запросов к https://sub.example.com/для движения в корректный docroot.

Конфигурация в качестве примера этого (и кроме блоков сервера служат HTTP и кроме HTTPS, не будучи должен развернуть количество конфигураций сервера):

server {
    listen 80 default_server;
    listen 443 default_server;

    server_name example.com;

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

    root /var/www/example.com;

    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

    # ... other config here
}

server {
    listen 80;
    listen 443 ssl;

    server_name sub.example.com;

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

    root /var/www/sub.example.com;

    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

    # other configuration for site here

}

Когда Вы запрашиваете https://sub.example.com, это соответствует конфигурации для второго сайта на HTTP и HTTPS, потому что и HTTP и слушатели HTTPS настроены для того блока сервера. Если Вы запрашиваете https://foo.example.com однако, это отступит к серверу с default_server блоком для 443 слушателей, которые служат example.com а не субдомен.

По существу у Вас должна быть пользовательская конфигурация, которая вручает certbot сертификат для Вашего субдомена на порте 443 для работы. К сожалению, Вы не можете использовать certbot nginx установщик, чтобы сделать это, и должно будет настроить certbot, чтобы использовать standalone/webroot режим для Ваших сертификатов и затем настроить NGINX самостоятельно вручную для надлежащих путей к сертификатам SSL (и .well-известные квитирования, которые продолжаются также).

Конфигурация Certbot о том, как использовать автономный / webroot режим, здесь: https://certbot.eff.org/docs/using.html#webroot

Необходимо будет использовать этот метод, чтобы настроить два отдельных SSL docroots/domains на nginx конфигурацию и затем настроить NGINX ssl_certificate, пути для указания на Позволение Шифруют дисковые пути. (Этот процесс является слишком длинным для вписывания в единственный ответ, но при необходимости чтобы я мог создать чат-комнату для обхода Вас посредством процесса),

0
ответ дан 7 April 2020 в 23:23

Другие вопросы по тегам:

Похожие вопросы: