Nginx - lekki serwer www
Ostatnio webnull opisywał na swoim blogu Lighttpd. Dzisiaj opisze jego "konkurenta" w wagę piórkowej wśród serwerów www dla systemów linux/unix.
Nginx jest serwerem WWW (HTTP) oraz serwerem proxy dla HTTP i IMAP/POP3. Jego autorem i producentem jest Igor Sysojew.
Jest on wykorzystywany przez wiele serwisów np. nk.pl w Polsce czy choćby imageshack.us.
Serwer występuje on w dwóch wersjach stabilnych: - wersji legacy oznaczonej numerem 0.7.68 - wersji normalnej stabilnej o symbolu 0.8.54 Również dostępna jest wersja w stanie rozwoju oznaczone numerem w tej chwili 0.9.4.
Instalacja serwera Paczki bądź źródła dla aplikacji znajdują się w większości dystrybucji. W przypadku Debianie, Ubuntu, Linux Mint instaluje się poleceniem:
apt-get install nginx
i uruchomieniu go poleceniem:
/etc/init.d/nginx start
W przypadku FreeBSD:
cd /usr/ports/www/nginx make install clean
i odpowiednio:
/usr/local/etc/rc.d/nginx onestart
Powinien działać. Po wpisaniu w przeglądarkę adresu http://localhost bądź http://127.0.0.1 powinna ukazać się strona:
Plikiem konfiguracyjnym dla serwera jest to:
/etc/nginx/sites-enabled/default
oraz wszystkie znajdujące się w tym katalogu.
Można go odpowiednio zmodyfikować, w przypadku samej obsługi html i plików wystarczy następująca konfiguracja:
server { server_name `adres ip bądź domena lub oba na raz`; #Autoindex `listowanie plikow`. autoindex on; index index.html; root `adres dla public_html np. /home/user/public_html`; }
Mój wygląda tak:
server { server_name localhost 192.168.1.130; autoindex on; index index.php index.html; include /etc/nginx/fastcgi_params; root /home/mateusz/public_html; }
Instalacja nginx z obsługą php, spawn-fcgi
Tutaj małe ułatwienie w konfiguracji. Adam 'Rocik' Wicherek przygotował skrypt - instalator nginx + fastcgi dla Debiana i jego pochodnych. Instalacja skryptu (jako root):
wget http://warsztat.rocik.net/instalator_n chmod +x instalator_n ./instalator_n
i należy postępować według poleceń.
W przypadku FreeBSD nie jest tak zielono, ale łatwo można sobie poradzić. Bardzo dobry poradnik na ten temat znajduje się tutaj.
Przykładowe ustawienia plików konfiguracyjnych:
- /etc/nginx/sites-enabled/default:
server { server_name localhost 192.168.1.130; autoindex on; index index.php index.html; include /etc/nginx/fastcgi_params; root /home/mateusz/public_html; }
- /etc/nginx/fastcgi_params:
location ~ .php\$ { #try_files \$uri @404; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; 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_FILENAME \$document_root\$fastcgi_script_name; 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 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; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; } # 404 if phpscript dont exist. #location @404 { return 404; break; }
- /etc/nginx/php.conf
php_processes 4 php_user www-data php_group www-data php_port 9000 php_address 127.0.0.1
Pobieranie zasobów
W przybliżeniu wychodzi ok. 800 KB na jeden proces serwera.