Создание виртуального хоста Nginx
При использовании веб-сервера Nginx вы можете использовать блоки сервера (аналогичные виртуальным хостам в Apache) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов.
По умолчанию включен один серверный блок, настроенный для вывода документов из директории /var/www/html
.
Для обслуживания этого контента Nginx необходимо создать серверный блок с правильными директивами. Вместо того чтобы изменять файл конфигурации по умолчанию напрямую, мы создадим новый файл в директории /etc/nginx/sites-available/название_домена.com
.
Скопируйте файл для домена:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/название_домена.com
Откройте новый файл в редакторе с привилегиями root
:
sudo nano /etc/nginx/sites-available/название_домена.com
Удаляем все что есть и пишем следующий блок конфигурации, который похож на заданный по умолчанию, но обновлен с учетом новой директории, доменного имени, проксирования запросов:
server {
# слушаем порт 80
listen 80;
# список доменов + поддоменов которые будет обрабатывать виртуальный хост
server_name название_домена.com www.название_домена.com;
# 301 редирект на протокол https (порт 443)
return 301 https://название_домена.com$request_uri;
}
server {
# слушаем порт 443
listen 443 ssl http2;
# директория сайта
root /var/www/название_домена.com/public_html;
# порядок обработки расширений
index index.php index.html;
# список доменов + поддоменов которые будет обрабатывать виртуальный хост
server_name название_домена.com www.название_домена.com;
# расширения которые обрабатывает Nginx
location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff|woff2|swf|ttf|svg|html|txt)$ {
root /var/www/название_домена.com/public_html;
}
# все что не попало в расширения для обработки Nginx, идет па Apahe
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
# закрываем доступ к файлам .htaccess
location ~ /\.ht {
deny all;
}
}
Активируем файл создав ссылку в директории sites-enabled
, который Nginx считывает при запуске:
sudo ln -s /etc/nginx/sites-available/название_домена.com /etc/nginx/sites-enabled/
Отключим файл конфигурации по умолчанию от /sites-enabled/
:
sudo unlink /etc/nginx/sites-enabled/default
Убедимся в отсутствии ошибок синтаксиса в файлах Nginx:
sudo nginx -t
Для корректной установки Apache необходимо временно отключить Nginx, так как по умолчанию они оба работают на 80 порту:
sudo systemctl stop nginx
Проверяем статус службу Nginx:
sudo systemctl status nginx