Так как nginx используется для веб-серверов, то нам осталось создать свой виртуальный сервер.
На одном физическом сервере можно разместить несколько виртуальных. Файлы виртуальных серверов хранятся в отдельных директориях и для каждого в nginx создается конфигурация. Как правило, виртуальный сервер имеет свое доменное имя.
Создадим директорию для нашего хоста:
1 | sudo mkdir -p /var/www/example.com/public_html |
Добавление ключа p к команде mkdir создаст весь путь до конченой директории.
На эту директорию нужно выдать права для пользователя, от которого у нас запускается nginx. По умолчанию это пользователь www-data.
1 | sudo chown -R www-data:www-data /var/www/example.com/public_html |
Важно убедиться также что любой пользователь может читать файлы из директории www:
1 | sudo chmod 755 /var/www |
Теперь нам нужно создать индексный файл, который будет отображаться по запросу в браузере.
1 | sudo nano /var/www/example.com/public_html/index.html |
Добавим в него содержимое в виде html – кода:
1 2 3 4 5 6 7 8 | <html> <head> <title>www.example.com</title> </head> <body> <h1>Success: You Have Set Up a Virtual Host</h1> </body> </html> |
Сохраним его и закроем текстовый редактор nano.
Теперь нам нужно сообщить nginx где искать файлы нашего хоста. Для этого используются файл конфигурации виртуальных хостов. По умолчанию он хранится по адресу /etc/nginx/sites-available. Создадим свою конфигурацию на основе конфигурации по умолчанию:
1 | sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com |
Теперь откроем файл для редактирования и немного изменим его содержимое.
1 | sudo nano /etc/nginx/sites-available/example.com |
1 2 3 4 5 6 7 8 9 | server { listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 root /var/www/example.com/public_html; index index.html index.htm; server_name example.com; }<br> |
Первой директивой мы указываем, что весь трафик пришедший на порт 80 будет направлен на наш хост.
Указание root хоста сообщает серверу директорию где он будет искать стартовый файл для отображения в ответ на запрос.
Директива indeх указывает приоритет типов файлов при обработке запроса.
Перезапустим nginx
1 | sudo service nginx restart |
Если вы используете доменное имя, которое приобрели у регистратора, то вам нужно указать IP адрес вашего сервера, на котором вы создали хост. В другом случае вы можете использовать локальный домен. Но чтобы ваш браузер знал его адрес, необходимо внести изменения в файл hosts.
1 | sudo nano /etc/hosts |
Добавьте запись с именем вашего локального домена и IP адресом вашего сервера.
1 2 3 4 5 6 7 8 9 | # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost #Virtual Hosts 192.168.0.12 example.com |
Если пользователь из локальной сети проделает эту же процедуру с файлом hosts, то по запросу в браузере example.com он попадет к вам на домен.
Естественно, большинство веб-серверов отображают не статические страницы, а генерируемые с помощью различных языков программирования, например, таких как php или python. Для взаимодействия этих языков с веб-сервером существуют специальные интерфейсы, php-fpm или uwsgy.
В следующих постах, я расскажу вам как подружить Nginx c различными backend – серверами.