Я пытаюсь использовать https://github.com/dmathieu/sabayon настроить let-encrypt для моего php-приложения на heroku.
Sabayon предоставляет пример для перенаправления акме-вызов позвонить с Apache из let-encrypt: https://github.com/dmathieu/sabayon#php-apps
Я пытался перевести это на Nginx, но не могу заставить его работать на Heroku.
Локально работает нормально.
Я старался:
location ~ ^/.well-known/acme-challenge/(.*)$ {
if (!-e $request_filename){
rewrite ^(.*)$ /.well-known/acme-challenge/index.php?q=$1 last;
break;
}
}
location ~ \.php$ {
try_files @heroku-fcgi @heroku-fcgi;
}
Но это приводит к PHP-коду в виде загруженного файла.
Я также попробовал:
location /.well-known/acme-challenge/ {
# try to serve file directly, fallback to rewrite
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /.well-known/acme-challenge/index.php/$1 last;
}
location ~ \.php$ {
try_files @heroku-fcgi @heroku-fcgi;
}
И это приводит к 403.
ОБНОВИТЬ
Я только что узнал, что 403 вызвана точкой в .well-known/acme-challenge
,
Как это можно сделать правильно?
Было несколько вещей, о которых нужно позаботиться:
.well-known
, доступныеТак что в конечном итоге это сработало для меня:
location ^~ /.well-known/acme-challenge/ {
allow all;
# try to serve file directly, fallback to rewrite
try_files $uri @rewriteacme;
}
location @rewriteacme {
rewrite ^(.*)$ /.well-known/acme-challenge/index.php/$1 last;
}
location ^~ /.well-known/acme-challenge/index.php {
try_files @heroku-fcgi @heroku-fcgi;
internal;
}
Других решений пока нет …