Нужно пояснить эту строку здесь:
Мне нужен последний сервер для использования 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
.
Надеюсь, это поможет!