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”.

  1. Po zmianach zrestartować server service nginx restart
  2. 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.

Table Of Contents

This Page