nginx + PHP-FPM: устранение с помощью параметров fastcgi

Я делаю небольшой эксперимент, гипотезу, если хотите. Основная идея проста: три контейнера Docker, один — просто контейнер данных с index.php в нем по адресу /app/web/ это просто выводит phpinfo(); Это отлично работает.

У меня есть контейнер nginx, который также работает нормально, и отдельный контейнер PHP-FPM. Оба они из официальных изображений.

У меня все работало нормально при стандартной настройке, и даже в качестве меры безопасности контейнер данных связывался только с php-fpm, поэтому у nginx даже не было доступа к самому файлу. Таким образом, контейнер данных монтируется на контейнере php-fpm в /appи все хорошо на свете.

Все это было хорошо. Затем я начал играть с некоторыми переменными.

Мне пришло в голову, что на самом деле, если nginx просто передает переменные в php-fpm, я мог бы удалить некоторые параметры в настройке nginx fastcgi, потому что зачем они нужны, если он даже не знает, что происходит? ?

Дела шли хорошо chroot установлен в /appи я добавил chdir в /web, но как только я удалил PATH_TRANSLATED из nginx он не работает. Я либо получаю File not found. или же No input file specified.

Вот соответствующие части nginx.conf контейнера nginx, нет root указан в nginx.conf:

location / {
index index.php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;

fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
fastcgi_index index.php;
fastcgi_param HTTPS $https;
fastcgi_param HTTP_PROXY '';
fastcgi_intercept_errors on;
fastcgi_pass php-fpm:9000;
break;
}

и соответствующие части www.conf бассейн:

chroot = /app

; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot

chdir = /web

php_admin_value[doc_root] = /app/web

Есть идеи?

0

Решение

Так что я настраивал и настраивал, пока не нашел правильную комбинацию. Вот мой конфиг nginx:

    location / {
index   index.php;
fastcgi_index  /index.php;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        /index.php;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
fastcgi_param SCRIPT_FILENAME /index.php;
fastcgi_param HTTP_PROXY '';

fastcgi_pass php-fpm:9000;
}

А вот мой конфиг пула:

chroot = /app
chdir = /web
php_admin_value[doc_root] = web

Я в основном скопировал все из файла fastcgi_params по умолчанию, чтобы я мог видеть, что происходит. Следующим шагом будет проверка этого с чем-то в гневе, например, с приложением Symfony 2 по умолчанию.

1

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

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

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