Używam SetEnv w Apache, aby ustawić niektóre zmienne w virtualhostach, które odzyskuję w PHP za pomocą $_SERVER[the_variable]
.
Teraz przechodzę na Perl Catalyst i Nginx, ale wygląda na to, że dyrektywa „env” w Nginx nie jest taka sama. To nie działa. Jak to osiągnąć?
Oto zdjęcie w tle, na wypadek, gdyby ktoś zaproponował lepsze podejście lub mój poprzedni system nie działa z Nginx.
- Używam tej samej aplikacji dla wielu domen. Wszystkie dane pochodzą z różnych baz danych o tej samej strukturze.
- Nazwa bazy danych jest zakodowana na stałe w wirtualnym hoście w tej zmiennej środowiskowej.
- Ponieważ znam nazwę bazy danych, wszystkie zapytania od pierwszego zapytania trafiają do odpowiedniej bazy danych.
- Mogę mieć wiele domen korzystających z tej samej bazy danych, po prostu włączając tę samą zmienną do dyrektyw.
ale to jest dla PHP-CGI
źródło
Należy pamiętać, że nginx nie zarządza procesami php, tak jak robi to Apache. Powinieneś skonfigurować php-fpm lub php-cgi, opierając się na tym, co uruchamia php na twoim serwerze.
php-cgi
php-fpm
źródło
Fastcgi_pass lokalizacja gniazdo musi przyjść, potem każdy z fastcgi_param parametrów. Możesz także wyświetlić listę zmiennych w pliku w folderze konfiguracyjnym nginx, a następnie dołączyć ten plik. Plik dołączany zwykle ma nazwę fastcgi_params . Parametry twojego środowiska można łatwo dodać do bloku obsługi 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; }
Plik fastcgi_params znajdujący się w tym samym katalogu co nginx.conf często wygląda następująco:
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;
źródło