Jak skonfigurować domyślnego hosta pod nginx

Konfigurując serwer www pod kontrolą nginx dobrą praktyką jest konfiguracja domyślnej strony jaka będzie wyświetlana na przykład po wpisaniu adresu IP serwera w przeglądarce internetowej.

Bez zdefiniowanego domyślnego hosta nginx potrafi zachowywać się w logicznie-niespodziewany sposób dlatego lepiej przeprowadzić dodatkową konfigurację

Lokalizacja i zawartość domyślnej strony www

W pierwszej kolejności trzeba przygotować katalog w którym będzie przechowywana domyślna strona www, stworzyć w nim plik index.html oraz nadać im odpowiednie uprawnienia. W zależności od preferencji zamiast tworzenia index.html z użyciem polecenia touch można od razu skorzystać z ulubionego edytora.

radek@centos.local:~$ sudo mkdir -p /var/www/html
radek@centos.local:~$ sudo touch /var/www/html/index.html
radek@centos.local:~$ sudo chown -R nginx:nginx /var/www/html/
radek@centos.local:~$ sudo chmod -R 550 /var/www/html/
radek@centos.local:~$ sudo vim /var/www/html/index.html

Poniższy kod html powinien sprawdzić się w większości przypadków oczywiście po uzupełnieniu poprawnej nazwy firmy. Nic też nie stoi na przeszkodzie by nieco go ulepszyć.

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>nazwa_firmy</title>
    <style>
        body {
            font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        }
        h1 {
            font-size: 4rem;
            margin-top: 15%;
            text-align: center;
        }
    </style>
</head>
<body>
    <h1>nazwa_firmy</h1>
</body>
</html>

Konfiguracja nginx

Posiadając już przygotowaną domyślną treść można przystąpić do drobnej zmiany w konfiguracji nginxa. W pierwszej kolejności warto wykonać kopię istniejącego pliku default.conf oraz otworzyć go w dowolnym edytorze.

radek@centos.local:~$ sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
radek@centos.local:~$ sudo vim /etc/nginx/conf.d/default.conf

By umieścić w nim następującą treść

server {
  listen 80 default_server;
  server_name _; # Niepoprawna wartosc ktora nie powinna wywolac kolizji z potencjalna nazwa hosta
  access_log /var/log/nginx/default.access.log main;

  server_name_in_redirect off;

  root  /var/www/html;
  index index.html;
}

Na koniec pozostaje przetestować konfigurację nginx i, jeżeli wszystko jest w porządku przeładować jego konfigurację.

radek@centos.local:~$ sudo nginx -t && sudo systemctl reload nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
radek@centos.local:~$

Skomentuj