Dynami c SSL-сертификат с nginx - PullRequest
1 голос
/ 02 мая 2020

У меня было приложение, похожее на Shopify. Итак, мой клиент получает субдомен при создании магазина (то есть customer1.myShopify.com).

для обработки этого случая динамических субдоменов c с nginx:

server {
    listen 443 ssl;
    server_name admin.myapp.com;

    ssl_certificate /etc/letsencrypt/live/myapp/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myapp/privkey.pem;

    location / {
        proxy_pass http://admin-front-end:80/;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
    }
}


server {
    listen 443 ssl;
    server_name *.myapp.com;

    ssl_certificate /etc/letsencrypt/live/myapp/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myapp/privkey.pem;

    location / {
        proxy_pass http://app-front-end:80/;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
    }
}

это прекрасно работает, поэтому, если вы посетите admin.myapp.com, вы увидите приложение администратора, а если вы зайдете на любое из xxx.myapp.com, вы увидите приложение front-end магазина.

Проблема

Я хочу разрешить своему клиенту подключать собственный домен. поэтому я сказал им соединиться с CNAME и A Record.

A Record => @ => 12.12.12.3(my root nginx ip)

CNAME => WWW => thier.myapp.com

не каждый запрос к customer.com будет обрабатываться моим nginx.

, поэтому я добавил эту конфигурацию в свой nginx, чтобы перехватить все другие запросы server_name:

server {
        listen  80;
        server_name  server_name ~^.*$;
        location / {
            proxy_pass http://app-front-end:80/;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
        }
}

и все работает нормально.

но как мне справиться с SSL для этого случая? потому что это может быть любое доменное имя. Я не знаю, каким будет доменное имя клиента.

как я могу дать им возможность добавлять сертификат SSL автоматически и без создания вручную?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...