Utilizo SetEnv en Apache para establecer algunas variables en los hosts virtuales que recupero en PHP usando $_SERVER[the_variable]
.
Ahora estoy cambiando a Perl Catalyst y Nginx, pero parece que la directiva "env" en Nginx no es la misma. No funciona. ¿Cómo se puede lograr?
Aquí está la imagen de fondo, en caso de que alguien pueda sugerir un enfoque mejor o mi sistema anterior no funcione con Nginx.
- Utilizo la misma aplicación para muchos dominios. Todos los datos provienen de diferentes bases de datos con la misma estructura.
- El nombre de la base de datos está codificado en el host virtual, en esa variable de entorno.
- Como conozco el nombre de la base de datos, todas las consultas van a la base de datos correspondiente, desde la primera consulta.
- Puedo tener varios dominios usando la misma base de datos, simplemente incluyendo la misma variable en las directivas.
pero es para PHP-CGI
fuente
Debe tener en cuenta que nginx no administra los procesos php como lo hace apache. Debe configurar php-fpm o php-cgi, confiando en lo que ejecuta php en su servidor.
php-cgi
php-fpm
fuente
La ubicación del socket fastcgi_pass debe aparecer primero, luego cada uno de los parámetros fastcgi_param . También puede enumerar las variables en un archivo en la carpeta de configuración nginx, luego incluir ese archivo. El archivo de inclusión comúnmente tiene el nombre fastcgi_params . Los parámetros de su entorno se pueden agregar fácilmente al bloque de manejo de 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; }
El archivo fastcgi_params ubicado en el mismo directorio que nginx.conf a menudo se ve así:
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;
fuente