nginx переписать на героку для acme-challenge

Я пытаюсь использовать 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,

Как это можно сделать правильно?

2

Решение

Было несколько вещей, о которых нужно позаботиться:

  • перенаправление
  • сделать скрытый каталог .well-known , доступные
  • выполнить файл php как php

Так что в конечном итоге это сработало для меня:

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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]