Настройка виртуального хоста Nginx

При работе с веб-сервером с которого работает множество сайтов часто возникает необходимость воссоздать виртуальные хосты в большом количестве на основе одного. После того как виртуальные хосты созданы их нужно активировать для того чтобы DocumentRoot каталоги начали обслуживаться веб-сервером.

Такая задача встречается, например, при установке Nginx перед Apache и настройке их работы в связке.

 

Обычно создается один рабочий конфиг, затем он копируется необходимое количество раз — в каждом конфиге редактируется имя сайта и DocumentRoot.

 

 

Настройка виртуального хоста Nginx — его общий (для связки Nginx-Apache)

Типовой конфиг Nginx при работе в связке с Apache выглядит приведенным ниже образом:

server {
listen *:80;

server_name example.com;
access_log /var/log/nginx/access.log;

location / {
proxy_pass 127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}

location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
root /home/website/example.com/;
}
}

 

Настройка виртуального хоста Nginx в примере включает кэширование и проксирование на бэкенд (Apache) на порт 8080.

Если Nginx применяется без Apache конфигурационный файл будет выглядеть иначе — такие конфигурации встречаются реже.

 

 

 

После этого этого нужно активировать сайт:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled

 

Если сайтов много гораздо удобнее делать это в цикле

Сначала переходим в каталог с файлами виртуальных хостов

cd /etc/nginx/sites-available

 

Затем в цикле выполняем следующую команду:

for i in `ls` ; do ln -s /etc/nginx/sites-available/$i /etc/nginx/sites-enabled/; done

 

В результате все виртуальные хосты окажутся активированными, если какие-то уже были включены выведется предупреждение, но на завершении выполнения команды это не отразится

 

В завершение потребуется проверить получившуюся конфигурацию

nginx -t

 

И дать веб-севреру команду о необходимости перечитывания конфигов

nginx -s reload

 

Одной из директив приведенного конфигурационного файла включается браузерное кэширование. Сервер начинает отдавать заголовок, распознавая который, браузер кэширует информацию.

 

Проверить, верно ли отрабатывает директива можно используя специализированный сервис. Указывается полный URL с путем к файлу, который должен кэшироваться (обычно это изображение, CSS или JS).