Instalacja serwera nginx ------------------------ Server nginx jest typowym serverem WWW, który potrafi: * Bardzo szybko wysyłać statyczne pliki. * Bardzo szybko przesyłać żądania do programów dokonujących dynamicznego ich przetwarzania. .. note:: Serwer ``nginx`` jest obecnie na rynku niemal równie popularny co ``apache2``. Paczki ********* Zainstalować server nginx oraz paczkę ``openjdk-7-doc``. Prosta konfiguracja serwera ************************************** Po instalacji server nginx odpowiada na zapytania ``HTTP`` (wejdźcie na adres ``localhost``). Konfiguracja servera ``nginx`` znajduje się w katalogu ``/etc/nginx``, a konfiguracja domyślnej strony w ``/etc/nginx/sites-available/default``, domyślnie ``nginx`` serwuje katalog ``/var/www/html``. Serwer jest konfigurowany za pomocą serii bloków ``server``:: server { listen 80 default_server; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /var/www/html; index index.html index.htm; server_name localhost; location / { try_files $uri $uri/ /index.html; } } Tak skonfigurowany serwer będzie odpowiadać na zaptania przychodzące na port 80, a nagłówkiem ``Host`` równym localhost. O tym na jakie domeny reaguje dana sekcja serwer jest określane w dyrektywie: ``server_name``. Przeglądarka po wejściu na adres: ``localhost/foo.html``, wykona zapytanie o treści:: GET /foo.html HTTP/1.1 Host: localhost ... Serwer zwróci zawartość pliku o nazwie ``foo.html`` w hatalogu ``/var/www/html``. Katalog ten określony jest w dyrektywie ``root`` (``root`` oznacza katalog głowny serwera a nie użytkownika ``root``). Jeśli przyjdzie zapytanie na ścieżkę ``/``:: GET / HTTP/1.1 Host: localhost Serwer zwróci plik ``index.html``. Konfiguracja w tym wypadku określa, że będzie obsługiwała nie tylko zapytania na host ``localhost``, ale również na wszystkie inne hosty, mówi o tym opcja ``default_server`` w dyrektywach ``listen``. Proszę: 1. Dodać plik o nazwie ``foo.html`` i sprawdzić że wyświetla on się w przeglądarce. Zadanie ********* Protokół HTTP umożliwia serwowanie wielu "stron WWW", albo inaczej, wielu domen z jednego komputera. Spróbujemy tak skonfigurować nasz serwer, by przy zapytaniu o domenę ``onet.pl``, listował zawartość katalogu ``/usr/share/doc`` (katalog ten zawiera dokumentację różnych paczek systemowych --- oddzielną od systemu ``man``). .. note:: Celowo wybrałem **dobrze znaną** domenę, tj. ``onet.pl``, ma to Wam pokazać że Wasz komputer może was okłamać przy wyświetlaniu strony (tak może też Wam pokazać żółtą kłódkę, ale to wymaga jeszcze paru operacji). Z punktu widzenia ``nginxa`` starczy dodać kolejną sekcję ``server``, która dodatkowo: 1. Nie posiada określenego ``default_server`` 2. Ma inną dyrektywę ``server_name`` 3. Ma na przykład inną dyrektywę ``root`` My dodatkowo włączymy opcję ``autoindex`` która spowoduje automatyczne generowanie listingu plików w kagalogu. Konfiguracja jest w tym wypadku nietrywialna, ale składa się z następujących etapów: 1. Dodajemy do pliku ``/etc/hosts`` nowe mapowanie, np.: 127.0.1.2 onet.pl 2. Stworzyć w katalogu ``sites-avilable`` plik o nazwie ``nowy-onet``, o takiej zawartości jak plik ``default``. 3. W pliku ``nowy-onet`` należy: 1. Zmienić w dyrektywie ``server_name`` wartość domeny na ``onet.pl`` (teraz nginx będzie używał tej strony jeśli odbierze połączenie na adres ``onet.pl``. 2. Usunąć z dyrektyw ``listen 80`` dyrektywę ``default_server``. .. note:: Jeśli nginx odbierze połączenie na domenę niepodpiętą pod żaden blok server, do obsługi wykorzysta ten blok server, który ma podane ``default_server``. Może być dokładnie jeden taki plik 3. Zmienić ``root`` na ``/usr/share/doc``. 4. Blok location zmienić na:: location / { autoindex on; # Włącza automatyczne listowanie katalogów } Spowoduje on, że po wejściu na adres ``onet.pl`` dostaniecie listing zawartości katalogu ``/usr/share/doc``. 4. Stworzyć dowiązanie symboliczne między ``/etc/nginx/sites-available/nowy-onet`` ``/etc/nginx/sites-enabled/nowy-onet``. .. note:: Do stworzenia dowiązania symbolicznego służy komenda ``ln -s skąd dokąd``. Zarówno nginx, jak i apache2 przechowują "możliwe do użycia serwisy" w katalogu ``sites-available``, a w sites enabled są dowiązania to tych stron, które są "aktualnie włączone". 6. Po zmianach zrestartować server ``service nginx restart`` 7. Wejśc na stronę ``onet.pl``. .. note:: Czasem bardzo wygodne jest skopiowanie sobie dokumentacji języków programowania na swój komputer, i serwowanie ich z lokalnego serwera. Można to łatwo zrobić dodając do konfiguracji serwera:: location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } Zadanie ********* Za pomocą polecenia telnet wykonać zapytanie GET, które pobierze zawartość ze strony ``localhost`` oraz modyfikowanej przez nas ``onet.pl``.