Nginx — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
 
(не показано 6 промежуточных версий 2 участников)
Строка 1: Строка 1:
= Описание программы =
+
== Nginx сервер ==
 +
Nginx - это самый популярный в мире веб-сервер, который обеспечивает работу целого ряда крупнейших сайтов в Интернете с огромным трафиком. Обычно он использует ресурсы эффективнее, чем Apache, и может использоваться как веб-сервер или обратный прокси-сервер.
  
'''Nginx''' - nginx [engine x] — это HTTP-сервер и обратный прокси-сервер, а также почтовый прокси-сервер, написанный Игорем Сысоевым. Уже длительное время он обслуживает серверы многих высоконагруженных российских сайтов, таких как Яндекс, Mail.Ru, ВКонтакте и Рамблер.
+
Уже длительное время он обслуживает серверы многих высоконагруженных российских сайтов, таких как Яндекс, Mail.Ru, ВКонтакте и Рамблер.
 
+
= Возможности =
+
  
 +
;Возможности:
 
*    Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов;
 
*    Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов;
 
*    Акселерированное обратное проксирование с кэшированием, простое распределение нагрузки и отказоустойчивость;
 
*    Акселерированное обратное проксирование с кэшированием, простое распределение нагрузки и отказоустойчивость;
Строка 11: Строка 11:
 
*    Поддержка SSL и расширения TLS SNI.
 
*    Поддержка SSL и расширения TLS SNI.
  
'''Другие возможности HTTP-сервера'''
+
;А также:
 
+
 
*    Виртуальные серверы, определяемые по IP-адресу и имени;
 
*    Виртуальные серверы, определяемые по IP-адресу и имени;
 
*    Поддержка keep-alive и pipelined соединений;
 
*    Поддержка keep-alive и pipelined соединений;
Строка 29: Строка 28:
 
*    Встроенный Perl.
 
*    Встроенный Perl.
  
'''Функциональность почтового прокси-сервера'''
+
;Функциональность почтового прокси-сервера:
 
+
 
*    Перенаправление пользователя на IMAP- или POP3-сервер с использованием внешнего HTTP-сервера аутентификации;
 
*    Перенаправление пользователя на IMAP- или POP3-сервер с использованием внешнего HTTP-сервера аутентификации;
 
*    Проверка пользователя с помощью внешнего HTTP-сервера аутентификации и перенаправление соединения на внутренний SMTP-сервер;
 
*    Проверка пользователя с помощью внешнего HTTP-сервера аутентификации и перенаправление соединения на внутренний SMTP-сервер;
Строка 40: Строка 38:
 
*    Поддержка STARTTLS и STLS.
 
*    Поддержка STARTTLS и STLS.
  
'''Архитектура и масштабируемость'''
+
;Архитектура и масштабируемость:
 
+
 
*    Один главный и несколько рабочих процессов, рабочие процессы работают под непривилегированным пользователем;
 
*    Один главный и несколько рабочих процессов, рабочие процессы работают под непривилегированным пользователем;
 
*    Поддержка kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select и poll;
 
*    Поддержка kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select и poll;
Строка 53: Строка 50:
  
  
 +
== Ссылки ==
 +
* [http://nginx.org/ru/ Официальный сайт]
 +
 +
== Инсталляция Nginx ==
 +
Установите пакет nginx с помощью следующей команды:
 +
dnf install nginx
 +
 +
Для запуска Nginx надо стартовать его сервис:
 +
systemctl start nginx.service
 +
 +
Чтобы включить Nginx при запуске системы:
 +
systemctl enable nginx.service
 +
 +
== Структура файлов и директорий Nginx ==
 +
 +
===Контент===
 +
{{File|/usr/share/nginx/html​​​}}: реальный веб-контент, в состав которого по умолчанию входит только показанная ранее страница Nginx по умолчанию, выводится из директории {{File|/usr/share/nginx/html​​​}}. Это можно изменить путем изменения файлов конфигурации Nginx.
 +
 +
===Конфигурация сервера===
 +
{{File|/etc/nginx}}: директория конфигурации Nginx. Здесь хранятся все файлы конфигурации Nginx.
 +
 +
{{File|/etc/nginx/nginx.conf}}: основной файл конфигурации Nginx. Его можно изменить для внесения изменений в глобальную конфигурацию Nginx.
 +
 +
{{File|/etc/nginx/conf.d/}}: эта директория содержит файлы конфигурации для блока сервера, где вы можете определить веб-сайты, которые размещены в Nginx. Типичный подход — размещение каждого сайта в отдельном файле, название которого совпадает с доменным именем сайта, например, vash_domen.conf.
 +
 +
===Журналы сервера===
 +
{{File|/var/log/nginx/access.log}}: каждый запрос к вашему веб-серверу регистрируется в этом файле журнала, если Nginx не настроен иначе.
 +
 +
{{File|/var/log/nginx/error.log}}: любые ошибки Nginx будут регистрироваться в этом журнале.
 +
 +
== Настройка сервера ==
 +
 +
После старта сервиса Nginx проверяем работу. Открываем браузер по адресу http://<ip адрес>/
 +
 +
Где <ip адрес> - это адрес сервера где запустили Nginx
 +
 +
[[Файл:Nginx1.png]]
 +
 +
Настройка файла конфигурации:
 +
 +
Основной файл конфигурации, как сказано было выше, {{File|/etc/nginx/nginx.conf}}
 +
Открываем его и правим нужные вам данные. Например, коснемнся некоторых из них:
 +
 +
Ниже представлен дефолтная конфигурация.
 +
 +
<pre>
 +
#user  nobody;
 +
worker_processes  1;
 +
 +
#error_log  logs/error.log;
 +
#error_log  logs/error.log  notice;
 +
#error_log  logs/error.log  info;
 +
 +
#pid        logs/nginx.pid;
 +
 +
 +
events {
 +
    worker_connections  1024;
 +
}
 +
 +
 +
http {
 +
    include      mime.types;
 +
    default_type  application/octet-stream;
 +
 +
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 +
    #                  '$status $body_bytes_sent "$http_referer" '
 +
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 +
 +
    #access_log  logs/access.log  main;
 +
 +
    sendfile        on;
 +
    #tcp_nopush    on;
 +
 +
    #keepalive_timeout  0;
 +
    keepalive_timeout  65;
 +
 +
    #gzip  on;
 +
 +
    server {
 +
        listen      80;
 +
        server_name  localhost;
 +
 +
        #charset koi8-r;
 +
 +
        #access_log  logs/host.access.log  main;
 +
 +
        location / {
 +
            root  html;
 +
            index  index.html index.htm;
 +
        }
 +
 +
        #error_page  404              /404.html;
 +
 +
        # redirect server error pages to the static page /50x.html
 +
        #
 +
        error_page  500 502 503 504  /50x.html;
 +
        location = /50x.html {
 +
            root  html;
 +
        }
 +
 +
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 +
        #
 +
        #location ~ \.php$ {
 +
        #    proxy_pass  http://127.0.0.1;
 +
        #}
 +
 +
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 +
        #
 +
        #location ~ \.php$ {
 +
        #    root          html;
 +
        #    fastcgi_pass  127.0.0.1:9000;
 +
        #    fastcgi_index  index.php;
 +
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 +
        #    include        fastcgi_params;
 +
        #}
 +
 +
        # deny access to .htaccess files, if Apache's document root
 +
        # concurs with nginx's one
 +
        #
 +
        #location ~ /\.ht {
 +
        #    deny  all;
 +
        #}
 +
    }
 +
 +
 +
    # another virtual host using mix of IP-, name-, and port-based configuration
 +
    #
 +
    #server {
 +
    #    listen      8000;
 +
    #    listen      somename:8080;
 +
    #    server_name  somename  alias  another.alias;
 +
 +
    #    location / {
 +
    #        root  html;
 +
    #        index  index.html index.htm;
 +
    #    }
 +
    #}
 +
 +
 +
    # HTTPS server
 +
    #
 +
    #server {
 +
    #    listen      443 ssl;
 +
    #    server_name  localhost;
 +
 +
    #    ssl_certificate      cert.pem;
 +
    #    ssl_certificate_key  cert.key;
 +
 +
    #    ssl_session_cache    shared:SSL:1m;
 +
    #    ssl_session_timeout  5m;
 +
 +
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
 +
    #    ssl_prefer_server_ciphers  on;
 +
 +
    #    location / {
 +
    #        root  html;
 +
    #        index  index.html index.htm;
 +
    #    }
 +
    #}
 +
 +
}
 +
 +
</pre>
 +
 +
* user - тут можно всписать nginx. Это юзер от которого запускается Nginx. В Росе Сервер он закомментирован, т.к. по дефолту запускается от юзера {{Prog|nginx}}
 +
* listen - в секции server отвечает за то, на каком порту "висит" Nginx. В данном лучае порт 80 ipv4.
 +
* server_name - имя вашего сервера. По умолчанию localhost
 +
* location / { - это управление путями запроса, в данном случае ```/``` это корень сайта. Т.е. все обращения по ip адресу или server_name будут перехватываться
 +
* root - путь к файлам сайта, которые будут открываться при запросе к этому хосту. У Nginx должен быть доступ на чтение ко всем папкам по этому пути
 +
* index - файлы, которые будут открываться, если адрес файла не указан в URL
 +
 +
Полный список всех опций Nginx можно почитать в [https://nginx.org/ru/docs/ документации].
 +
 +
=== Создание виртуальных хостов ===
 +
 +
Сначала нужно создать структуру каталогов для хранения данных для сайтов.
 +
 +
Такие каталоги (каталоги верхнего уровня) называются document root. В каталоге {{File|/var/www}} нужно создать отдельные подкаталоги для каждого сайта. А в них - подкаталоги html для хранения файлов сайта.
 +
 +
mkdir -p /var/www/rosaserver1/html
 +
mkdir -p /var/www/rosaserver2/html
 +
 +
Затем необходимо назначить права владения для директории с помощью переменной среды $USER, которая будет использоваться для текущего системного пользователя:
 +
 +
chown -R $USER:$USER /var/www/rosaserver1/html
 +
chown -R $USER:$USER /var/www/rosaserver2/html
 +
 +
Теперь нужно создать страницу для каждого из сайтов, чтобы иметь возможность просмотреть их.
 +
 +
Для первого сайта:
 +
nano /var/www/rosaserver1/html/index.html
 +
Добавляем в файл простой код:
 +
<pre>
 +
<html>
 +
<head>
 +
<title>Welcome to RosaServer1!</title>
 +
</head>
 +
<body>
 +
<h1>Success! The RosaServer1 block is working!</h1>
 +
</body>
 +
</html>
 +
</pre>
 +
 +
Для второго сайта:
 +
nano /var/www/rosaserver2/html/index.html
 +
Добавляем в файл простой код:
 +
<pre>
 +
<html>
 +
<head>
 +
<title>Welcome to RosaServer2!</title>
 +
</head>
 +
<body>
 +
<h1>Success! The RosaServer2 block is working!</h1>
 +
</body>
 +
</html>
 +
</pre>
 +
 +
Сохраните и закройте файл
 +
 +
Теперь надо создать серкции '''server''', т.е. виртуальные хостя для Nginx.
 +
 +
Для начала создайте каталог для хранения файлов хостов (sites-available), а также каталог, предоставляющий Nginx список хостов, которые нужно обслуживать (sites-enabled).
 +
 +
mkdir /etc/nginx/sites-available
 +
mkdir /etc/nginx/sites-enabled
 +
 +
После этого нужно сообщить , что доступные блоки server хранятся в каталоге sites-enabled. Для этого нужно отредактировать главный конфигурационный файл Nginx, добавив в него строку, сообщающую о других конфигурационных файлах:
 +
 +
Добавьте эти строки в конец блока http {}:
 +
 +
include /etc/nginx/sites-enabled/*.conf;
 +
 +
Теперь надо создать файлы конфигурации для наших виртуальных хостов:
 +
 +
cp /etc/nginx/conf.d/virtual.conf /etc/nginx/sites-available/rosaserver1.conf
 +
cp /etc/nginx/conf.d/virtual.conf /etc/nginx/sites-available/rosaserver2.conf
 +
 +
Откроем каждый файл {{File|/etc/nginx/sites-available/rosaserver1.conf}} и {{File|/etc/nginx/sites-available/rosaserver2.conf}} и отредактикуем его:
 +
 +
nano /etc/nginx/sites-available/rosaserver1.conf
 +
 +
В итоге должен получится такой формат файлов:
 +
<pre>
 +
server {
 +
    listen      80;
 +
    server_name  rosaserver1;
 +
 +
    location / {
 +
        root  /var/www/rosaserver1/html;
 +
        index  index.html index.htm;
 +
    }
 +
}
 +
</pre>
 +
Аналогично с вторым файлом, только server_name впишите rosaserver1 и в root /var/www/rosaserver2/html
  
= Установка программы =
+
Базовая конфигурация хоста завершена. Сохраните и закройте файл.
  
В консоли наберите следующую команду:
+
Включение секции '''server'''
  
{{Cmd|urpmi nginx}}
+
Для этого создайте символическую ссылку для каждой секции (сайта) в каталог sites-enabled:
 +
ln -s /etc/nginx/sites-available/rosaserver1.conf /etc/nginx/sites-enabled/rosaserver1.conf
 +
ln -s /etc/nginx/sites-available/rosaserver2.conf /etc/nginx/sites-enabled/rosaserver2.conf
  
Если не можете найти пакет, подключите репозитории. Как подключать репозитории [[Настройка официальных источников| написано здесь]].
+
После этого перезапустите Nginx, чтобы обновить настройки сервера:
 +
systemctl restart nginx.service
  
= Официальный сайт программы =
+
Проверим работу наших виртуальныз серверов. Откроем браузер по адресам: {{Cmd|http://rosaserver1/}} и {{Cmd|http://rosaserver2/}}
  
[http://nginx.org/ru/ http://nginx.org/ru/]
+
[[Файл:Nginx2.png]]
  
= Скриншоты программы =
+
Мы видим на двух виртуальных серверах наши демо-странички.
  
{{Навигация|Разделы|[[Программы_ROSA_Linux|Все разделы]]&nbsp;-&nbsp;[[Программы_ROSA_Linux#p12|Серверы]]}}
+
[[Категория:Программы ROSA Linux]]
[[Категория:Программы ROSA Linux|Lighttpd]]
+
[[Категория:ROSA Server]]
 
[[Category:SoftwareDescriptions]]
 
[[Category:SoftwareDescriptions]]

Текущая версия на 14:01, 10 марта 2023

Nginx сервер

Nginx - это самый популярный в мире веб-сервер, который обеспечивает работу целого ряда крупнейших сайтов в Интернете с огромным трафиком. Обычно он использует ресурсы эффективнее, чем Apache, и может использоваться как веб-сервер или обратный прокси-сервер.

Уже длительное время он обслуживает серверы многих высоконагруженных российских сайтов, таких как Яндекс, Mail.Ru, ВКонтакте и Рамблер.

Возможности
  • Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов;
  • Акселерированное обратное проксирование с кэшированием, простое распределение нагрузки и отказоустойчивость;
  • Акселерированная поддержка FastCGI, uwsgi, SCGI и memcached серверов с кэшированием, простое распределение нагрузки и отказоустойчивость;
  • Модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, XSLT-фильтр, SSI-фильтр, преобразование изображений; несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно;
  • Поддержка SSL и расширения TLS SNI.
А также
  • Виртуальные серверы, определяемые по IP-адресу и имени;
  • Поддержка keep-alive и pipelined соединений;
  • Гибкость конфигурации;
  • Изменение настроек и обновление исполняемого файла без перерыва в обслуживании клиентов;
  • Настройка форматов логов, буферизованная запись в лог, быстрая ротация логов;
  • Специальные страницы для ошибок 3xx-5xx;
  • rewrite-модуль: изменение URI с помощью регулярных выражений;
  • Выполнение разных функций в зависимости от адреса клиента;
  • Ограничение доступа в зависимости от адреса клиента и по паролю (HTTP Basic аутентификация);
  • Проверка HTTP referer;
  • Методы PUT, DELETE, MKCOL, COPY и MOVE;
  • FLV и MP4 стриминг;
  • Ограничение скорости отдачи ответов;
  • Ограничение числа одновременных соединений и запросов с одного адреса;
  • Встроенный Perl.
Функциональность почтового прокси-сервера
  • Перенаправление пользователя на IMAP- или POP3-сервер с использованием внешнего HTTP-сервера аутентификации;
  • Проверка пользователя с помощью внешнего HTTP-сервера аутентификации и перенаправление соединения на внутренний SMTP-сервер;
  • Методы аутентификации:
       POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
       IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
       SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
  • Поддержка SSL;
  • Поддержка STARTTLS и STLS.
Архитектура и масштабируемость
  • Один главный и несколько рабочих процессов, рабочие процессы работают под непривилегированным пользователем;
  • Поддержка kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select и poll;
  • Использование возможностей, предоставляемых kqueue, таких как EV_CLEAR, EV_DISABLE (для временного выключения события), NOTE_LOWAT, EV_EOF, число доступных данных, коды ошибок;
  • Поддержка sendfile (FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5+), sendfile64 (Linux 2.4.21+) и sendfilev (Solaris 8 7/01+);
  • Поддержка файлового AIO (FreeBSD 4.3+, Linux 2.6.22+);
  • Поддержка DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, Mac OS X);
  • Поддержка accept-фильтров (FreeBSD 4.1+, NetBSD 5.0+) и TCP_DEFER_ACCEPT (Linux 2.4+);
  • На 10 000 неактивных HTTP keep-alive соединений расходуется около 2.5M памяти;
  • Минимум операций копирования данных.


Ссылки

Инсталляция Nginx

Установите пакет nginx с помощью следующей команды:

dnf install nginx

Для запуска Nginx надо стартовать его сервис:

systemctl start nginx.service

Чтобы включить Nginx при запуске системы:

systemctl enable nginx.service

Структура файлов и директорий Nginx

Контент

/usr/share/nginx/html​​​: реальный веб-контент, в состав которого по умолчанию входит только показанная ранее страница Nginx по умолчанию, выводится из директории /usr/share/nginx/html​​​. Это можно изменить путем изменения файлов конфигурации Nginx.

Конфигурация сервера

/etc/nginx: директория конфигурации Nginx. Здесь хранятся все файлы конфигурации Nginx.

/etc/nginx/nginx.conf: основной файл конфигурации Nginx. Его можно изменить для внесения изменений в глобальную конфигурацию Nginx.

/etc/nginx/conf.d/: эта директория содержит файлы конфигурации для блока сервера, где вы можете определить веб-сайты, которые размещены в Nginx. Типичный подход — размещение каждого сайта в отдельном файле, название которого совпадает с доменным именем сайта, например, vash_domen.conf.

Журналы сервера

/var/log/nginx/access.log: каждый запрос к вашему веб-серверу регистрируется в этом файле журнала, если Nginx не настроен иначе.

/var/log/nginx/error.log: любые ошибки Nginx будут регистрироваться в этом журнале.

Настройка сервера

После старта сервиса Nginx проверяем работу. Открываем браузер по адресу http://<ip адрес>/

Где <ip адрес> - это адрес сервера где запустили Nginx

Nginx1.png

Настройка файла конфигурации:

Основной файл конфигурации, как сказано было выше, /etc/nginx/nginx.conf Открываем его и правим нужные вам данные. Например, коснемнся некоторых из них:

Ниже представлен дефолтная конфигурация.

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

  • user - тут можно всписать nginx. Это юзер от которого запускается Nginx. В Росе Сервер он закомментирован, т.к. по дефолту запускается от юзера nginx
  • listen - в секции server отвечает за то, на каком порту "висит" Nginx. В данном лучае порт 80 ipv4.
  • server_name - имя вашего сервера. По умолчанию localhost
  • location / { - это управление путями запроса, в данном случае ```/``` это корень сайта. Т.е. все обращения по ip адресу или server_name будут перехватываться
  • root - путь к файлам сайта, которые будут открываться при запросе к этому хосту. У Nginx должен быть доступ на чтение ко всем папкам по этому пути
  • index - файлы, которые будут открываться, если адрес файла не указан в URL

Полный список всех опций Nginx можно почитать в документации.

Создание виртуальных хостов

Сначала нужно создать структуру каталогов для хранения данных для сайтов.

Такие каталоги (каталоги верхнего уровня) называются document root. В каталоге /var/www нужно создать отдельные подкаталоги для каждого сайта. А в них - подкаталоги html для хранения файлов сайта.

mkdir -p /var/www/rosaserver1/html
mkdir -p /var/www/rosaserver2/html

Затем необходимо назначить права владения для директории с помощью переменной среды $USER, которая будет использоваться для текущего системного пользователя:

chown -R $USER:$USER /var/www/rosaserver1/html
chown -R $USER:$USER /var/www/rosaserver2/html

Теперь нужно создать страницу для каждого из сайтов, чтобы иметь возможность просмотреть их.

Для первого сайта:

nano /var/www/rosaserver1/html/index.html

Добавляем в файл простой код:

<html>
<head>
<title>Welcome to RosaServer1!</title>
</head>
<body>
<h1>Success! The RosaServer1 block is working!</h1>
</body>
</html>

Для второго сайта:

nano /var/www/rosaserver2/html/index.html

Добавляем в файл простой код:

<html>
<head>
<title>Welcome to RosaServer2!</title>
</head>
<body>
<h1>Success! The RosaServer2 block is working!</h1>
</body>
</html>

Сохраните и закройте файл

Теперь надо создать серкции server, т.е. виртуальные хостя для Nginx.

Для начала создайте каталог для хранения файлов хостов (sites-available), а также каталог, предоставляющий Nginx список хостов, которые нужно обслуживать (sites-enabled).

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled

После этого нужно сообщить , что доступные блоки server хранятся в каталоге sites-enabled. Для этого нужно отредактировать главный конфигурационный файл Nginx, добавив в него строку, сообщающую о других конфигурационных файлах:

Добавьте эти строки в конец блока http {}:

include /etc/nginx/sites-enabled/*.conf;

Теперь надо создать файлы конфигурации для наших виртуальных хостов:

cp /etc/nginx/conf.d/virtual.conf /etc/nginx/sites-available/rosaserver1.conf
cp /etc/nginx/conf.d/virtual.conf /etc/nginx/sites-available/rosaserver2.conf

Откроем каждый файл /etc/nginx/sites-available/rosaserver1.conf и /etc/nginx/sites-available/rosaserver2.conf и отредактикуем его:

nano /etc/nginx/sites-available/rosaserver1.conf

В итоге должен получится такой формат файлов:

server {
    listen       80;
    server_name  rosaserver1;

    location / {
        root   /var/www/rosaserver1/html;
        index  index.html index.htm;
    }
}

Аналогично с вторым файлом, только server_name впишите rosaserver1 и в root /var/www/rosaserver2/html

Базовая конфигурация хоста завершена. Сохраните и закройте файл.

Включение секции server

Для этого создайте символическую ссылку для каждой секции (сайта) в каталог sites-enabled:

ln -s /etc/nginx/sites-available/rosaserver1.conf /etc/nginx/sites-enabled/rosaserver1.conf
ln -s /etc/nginx/sites-available/rosaserver2.conf /etc/nginx/sites-enabled/rosaserver2.conf

После этого перезапустите Nginx, чтобы обновить настройки сервера:

systemctl restart nginx.service

Проверим работу наших виртуальныз серверов. Откроем браузер по адресам: http://rosaserver1/ и http://rosaserver2/

Nginx2.png

Мы видим на двух виртуальных серверах наши демо-странички.