Как добавить certbot в другой порт - PullRequest
0 голосов
/ 10 июня 2019

Я настраиваю серверную часть своего сервера, но не могу заставить certbot работать с моим API, используя https. Только мой веб-сайт перенаправляется на https.

Я просто не очень хорошо разбираюсь в nginx, я не знаю, как мне решить эту проблему. Мне нужен последний сервер для использования certbot, порт 4444.

root /var/www/domain.com/public;

server {

        index index.html index.htm index.nginx-debian.html;

        server_name domain.com www.domain.com blog.domain.com;

        location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $Host;
        proxy_cache_bypass $http_upgrade;
               # try_files $uri $uri/ =404;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.com/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

}

server {
    if ($host = www.domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = blog.domain.com) {
    return 301 https://$host$request_uri;
    } # managed by Certbot

        listen 80;
        listen [::]:80;

        server_name domain.com blog.domain.com www.domain.com;
    return 404; # managed by Certbot

}

server {
    location / {
        proxy_pass http://localhost:4444;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $Host;
        proxy_cache_bypass $http_upgrade;
               # try_files $uri $uri/ =404;
    }
}

1 Ответ

0 голосов
/ 11 июня 2019

Нужно пояснить эту строку здесь:

Мне нужен последний сервер для использования certbot, порт 4444

Вы имели в виду доступ к порту 4444 (через обратный прокси-сервер) с сертификатом, выданным Certbot?

В последнем блоке сервера вы, возможно, пропустили установку server_name. Обратите внимание, что эта строка была у вас в предыдущих блоках сервера.

При условии следующих сценариев:

API работает в другом поддомене

  • API: api.domain.com (где работает ваш API)
  • сертификат от Certbot выдал групповой сертификат в /etc/letsencrypt/live/domain.com

Учитывая эти предположения, предлагаемая конфигурация блока сервера может быть такой:

server {
    server_name api.domain.com;
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

     location / {
        proxy_pass http://localhost:4444;
        ## additional proxy configurations here
    }
}

Если вы не запрашивали подстановочный сертификат для всех поддоменов, я предлагаю сделать запрос именно для вашего поддоменов API и при необходимости изменить пути ssl_certificate_key и ssl_certificate.

API является частью основного домена

  • API: domain.com/api (API работает внутри domain.com)

Если это так, рассмотрите возможность добавления блока местоположения в свой первый блок сервера:

server {
    ....
    location / {
        ..... no changes here
    }

    ## add this block
    location /api/ {
        proxy_pass http://localhost:4444;
        ## additional proxy configurations here
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    ....
}

В этом сценарии не требуется никаких изменений для путей ssl_certificate_key и ssl_certificate.

Надеюсь, это поможет!

...