Сегодня я расскажу, как настроить FASTPANEL для передачи запросов на SSL-сертификаты Let’s Encrypt от BACKEND. При этом FASTPANEL сохранит возможность получать эти сертификаты напрямую от центра сертификации.
Тех поддержка панели, к сожалению не помогла разобраться в данном вопросе, и пришлось это сделать самому. На самом деле решение очень простое и занимает минимум времени.
Первым делом подключаемся по SSH к серверу панели, и в нем открываем конфиг letsencrypt.conf
1 |
nano /etc/nginx/fastpanel2-includes/letsencrypt.conf |
В нем необходимо добавить строку “try_files $uri @proxy;”
Директива try_files $uri @proxy;
в Nginx используется для обработки запросов к файлам и последующего перенаправления, если файл не найден.
Разбор:
try_files
– проверяет существование указанных файлов или путей в заданном порядке.$uri
– переменная, содержащая запрошенный URI (например,/index.html
).@proxy
– именованный location (@
означает, что это внутренний location, а не путь в URL), куда запрос будет перенаправлен, если файл не найден.
Как это работает:
- Nginx сначала проверяет, существует ли файл, соответствующий
$uri
(например, запрос/style.css
→ проверяет/var/www/style.css
). - Если файл найден, он отдается клиенту.
- Если файл не найден, запрос перенаправляется в
@proxy
(обычно это проксирование на бэкенд, например, Node.js, PHP-FPM или другой сервер).
В итоге конфигурация letsencrypt.conf должна выглядеть следующим образом:
1 2 3 4 5 |
location ^~ /.well-known/acme-challenge/ { auth_basic off; alias /usr/local/fastpanel2/web/letsencrypt/; try_files $uri @proxy; } |
Для активации проксирования SSL на нужном сайте, добавьте новую локацию в конфигурационный файл /etc/nginx/fastpanel2-sites/ИМЯ_ПОЛЬЗОВАТЕЛЯ/*.includes. Вместо 192.168.88.123 укажите IP-адрес бэкэнда.
1 2 3 |
location @proxy { proxy_pass http://192.168.88.123; } |
Проверяем синтаксис конфигов на ошибки и перезапускаем nginx
1 |
nginx -t && systemctl reload nginx |
Теперь получение SSL-сертификата будет доступено как для фронтенда, так и для бэкенда.