Za pomocą formularza kontaktowego dostałem pytanie dotyczące 2 niedawno opublikowanych wpisów, i mimo, że wolałbym, by było zadane w formie komentarza pod jednym z wpisów, to wydaje się na tyle ciekawe, że postanowiłem zrobić wyjątek i odpowiem na przesłane pytanie, choć w formie ogólnodostępnego wpisu – bo podejrzewam, że ta informacja może przydać się nie tylko pytającemu…

Nginx Snippets i różne PHP Pools dla stron

W przypadku, gdy na swoim serwerze macie więcej stron (i korzystacie z webserwera Nginx) zapewne wiecie, że wspólne pliki konfiguracyjne (Nginx Snippets) znacznie potrafią uprościć wprowadzanie hurtowych/globalnych zmian w konfiguracji.

Gdy macie wiele stron, to oprócz wygody zapewne ważne dla Was jest bezpieczeństwo, a więc bardzo prawdopodobne, że korzystacie z różnych gniazd PHP (PHP Pools w PHP-FPM w Apache2/Nginx) dla poszczególnych stron.

Połączyć ogień z wodą

I tu może pojawić się problem – bo Nginx Snippets dzięki wspólnym plikom konfiguracyjnym pozwala znacznie uprościć konfigurację, ułatwić wprowadzanie zmian, ale z kolei PHP Pools wymaga indywidualnej konfiguracji usługi PHP dla każdej strony/domeny, gdyż musimy podać tam dedykowaną dla danej strony nazwę gniazda PHP.

Bo konfiguracja ZMIENNA jest

Rozwiązaniem są zmienne, które możemy zdefiniować w konfiguracji danego vHosta w webserwerze Nginx, a tym samym możemy wykorzystać taką zmienną do zdefiniowania gniazda PHP, przy wykorzystaniu wspólnej konfiguracji dla wszystkich stron korzystających z indywidualnych gniazd PHP Pools.

Zaczynamy od zdefiniowania zmiennej w konfiguracji wybranego vHosta – na potrzeby tego poradnika zmienna to „$pool_name”, a jej wartość to „webinsider”, czyli element wyróżniający wybrane gniazdo PHP (/var/run/php5-fpm-webinsider.sock):

set $pool_name webinsider;

Następnie wczytujemy plik wspólnej konfiguracji:

include snippets/php-pools.conf;

A sam plik „php-pools.conf”, w którym znajdzie się konfiguracja dla PHP-FPM może wyglądać np. tak:

location ~ \.php$ {
	try_files $uri =404;
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	fastcgi_pass unix:/var/run/php5-fpm-$pool_name.sock;
	fastcgi_index index.php;
	include fastcgi.conf;
}

Dzięki temu plik „php-pools.conf” możecie ustawić jako wspólny dla wielu różnych stron korzystających z indywidualnych gniazd PHP, a dzięki modyfikacji wartości zmiennej „$pool_name” sprawicie, że dla danej strony będzie wykorzystywane wybrane gniazdo PHP (PHP Pools).

Oczywiście to tylko przykład wykorzystania zmiennych, a możliwości jest dużo więcej…

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk