docker — можно ли передать запрос в php-fpm без nginx с подключенным томом

Я пытаюсь перенести свой старый монолит на k8s, теперь у меня есть изображения nginx и php-fpm (с кодом), и я хочу, чтобы nginx просто обслуживал http-трафик и передавал его в fpm, но nginx настаивает на наличии файлов, я не иметь try_files директива, но она все равно пытается найти корневые и индексные файлы.

Так возможно ли вообще не монтировать исходный код в nginx, я действительно не понимаю, почему он должен быть там, но я не смог найти ни одного рабочего примера

nginx.conf:

server {
listen 80;

index index.php;
# This dir exist only in php-fpm container
root /var/www/html/public;

location ~* \.php$ {

client_max_body_size 0;

include fastcgi_params;
fastcgi_pass php-fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}

2018/08/17 16:44:40 [ошибка] 9 # 9: * 46 «/var/www/html/public/index.php» не найден (2: нет такого файла или каталога), клиент: 192. xxx.xxx.xxx, сервер:, запрос: «GET / HTTP / 1.1», хост: «localhost»

192.xxx.xxx.xxx — — [17 / Aug / 2018: 16: 44: 40 +0000] «GET / HTTP / 1.1» 404 571 «-» «Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 ( KHTML, как Gecko) Chrome / 65.0.3325.146 Safari / 537.36 «» 195.xxx.xxx.xxx «

2

Решение

Проблема в том, что index директива нуждается в файле index.php существовать, для внутреннего перенаправления URI / в /index.php,

Вы можете избежать index директива, добавив location / внутренне перенаправить все на /index.php,

Например:

location / {
rewrite ^ /index.php last;
}
location ~* \.php$ {
root /var/www/html/public;
client_max_body_size 0;

include fastcgi_params;
fastcgi_pass php-fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
}
1

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

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

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