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

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które - w miarę możliwości - spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. "linki partnerskie", co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte... :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!