Я использую SetEnv в Apache для установки некоторых переменных в виртуальных хостах, которые я восстанавливаю с помощью PHP $_SERVER[the_variable]
.
Сейчас я перехожу на Perl Catalyst и Nginx, но мне кажется, что директива env в Nginx отличается. Это не работает. Как этого добиться?
Вот фоновое изображение, на случай, если кто-то может предложить лучший подход или моя предыдущая система не работает с Nginx.
- Я использую одно и то же приложение для многих доменов. Все данные поступают из разных баз данных с одинаковой структурой.
- Имя базы данных жестко привязано к виртуальному хосту в этой переменной среды.
- Поскольку я знаю имя базы данных, все запросы отправляются в соответствующую базу данных с самого первого запроса.
- Я могу иметь несколько доменов, использующих одну и ту же базу данных, просто включая одну и ту же переменную в директивы.
но это для PHP-CGI
источник
Вы должны иметь в виду, что nginx не управляет процессами php, как apache. Вы должны настроить либо php-fpm, либо php-cgi, в зависимости от того, что запускает php на вашем сервере.
php-cgi
php-fpm
источник
Fastcgi_pass расположение сокета должен прийти первым, то каждый из fastcgi_param параметров. Вы также можете перечислить переменные в файле в папке конфигурации nginx, а затем включить этот файл. Включаемый файл обычно называется fastcgi_params . Параметры вашего окружения можно легко добавить в блок обработки php:
location ~ \.php$ { fastcgi_pass unix:/your_sock_location/nginxFastCGI.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param APP_ENV production; include fastcgi_params; }
В fastcgi_params файл , расположенный в том же каталоге, nginx.conf часто выглядит следующим образом :
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 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 $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; 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;
источник