Server nginx jest typowym serverem WWW, który potrafi:
Note
Serwer nginx jest obecnie na rynku niemal równie popularny co apache2.
Zainstalować server nginx oraz paczkę openjdk-7-doc.
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ę:
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:
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:
Dodajemy do pliku /etc/hosts nowe mapowanie, np.:
127.0.1.2 onet.pl
Stworzyć w katalogu sites-avilable plik o nazwie nowy-onet, o takiej zawartości jak plik default.
W pliku nowy-onet należy:
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.
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
Zmienić root na /usr/share/doc.
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.
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”.
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;
}
Za pomocą polecenia telnet wykonać zapytanie GET, które pobierze zawartość ze strony localhost oraz modyfikowanej przez nas onet.pl.