Руководство по созданию виртуальных хостов для HTTP-сервера nginx в Gentoo GNU/Linux. Продолжение статьи о запуске стека LEMP в Gentoo.
Перед созданием виртуальных хостов необходимо убедиться в наличии соответствующих A или AAAA записей на DNS-сервере. Эти записи создаются в личном кабинете в панели управления регистратора доменных имён, или на собственном DNS-сервере https://dondub.com/tag/nameserver/.
Создадим директорию /etc/nginx/vhosts/ для файлов конфигураций виртуальных хостов
# mkdir /etc/nginx/vhosts/
Также создадим файлы конфигураций хостов webserver.local, test.webserver.local и homeserver.local
# touch /etc/nginx/vhosts/{webserver.local.conf,test.webserver.local.conf,homeserver.local.conf}
После этого открываем файл конфигурации /etc/nginx/nginx.conf
# nano /etc/nginx/nginx.conf
и в секции http (перед закрывающей фигурной скобкой) в самом конце допишем:
include /etc/nginx/vhosts/*.conf;
Затем открываем конфигурационный файл виртуального хоста webserver.local
# nano /etc/nginx/vhosts/webserver.local.conf
и в нём пропишем такие строки:
server {
listen 192.168.1.25:80;
server_name webserver.local;
access_log /var/log/nginx/webserver.local_access_log main;
error_log /var/log/nginx/webserver.local_error_log info;
root /var/www/webserver.local/htdocs;
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.socket;
}
}
server {
listen 192.168.1.25:443;
server_name webserver.local;
ssl on;
ssl_certificate /etc/ssl/nginx/nginx.pem;
ssl_certificate_key /etc/ssl/nginx/nginx.key;
access_log /var/log/nginx/webserver.local.ssl_access_log main;
error_log /var/log/nginx/webserver.local.ssl_error_log info;
root /var/www/webserver.local/htdocs;
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.socket;
}
}
здесь 192.168.1.25 — IP-адрес сервера
Аналогично создадим конфиги для хостов test.webserver.local и homeserver.local
# nano /etc/nginx/vhosts/test.webserver.local.conf
server {
listen 192.168.1.25:80;
server_name test.webserver.local;
access_log /var/log/nginx/test.webserver.local_access_log main;
error_log /var/log/nginx/test.webserver.local_error_log info;
root /var/www/test.webserver.local/htdocs;
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.socket;
}
}
server {
listen 192.168.1.25:443;
server_name test.webserver.local;
ssl on;
ssl_certificate /etc/ssl/nginx/nginx.pem;
ssl_certificate_key /etc/ssl/nginx/nginx.key;
access_log /var/log/nginx/test.webserver.local.ssl_access_log main;
error_log /var/log/nginx/test.webserver.local.ssl_error_log info;
root /var/www/test.webserver.local/htdocs;
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.socket;
}
}
# nano /etc/nginx/vhosts/homeserver.local.conf
server {
listen 192.168.1.25:80;
server_name homeserver.local;
access_log /var/log/nginx/homeserver.local_access_log main;
error_log /var/log/nginx/homeserver.local_error_log info;
root /var/www/homeserver.local/htdocs;
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.socket;
}
}
server {
listen 192.168.1.25:443;
server_name homeserver.local;
ssl on;
ssl_certificate /etc/ssl/nginx/nginx.pem;
ssl_certificate_key /etc/ssl/nginx/nginx.key;
access_log /var/log/nginx/homeserver.local.ssl_access_log main;
error_log /var/log/nginx/homeserver.local.ssl_error_log info;
root /var/www/homeserver.local/htdocs;
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.socket;
}
}
Затем создадим директории для хранения сайтов виртуальных хостов webserver.local, test.webserver.local и homeserver.local
# mkdir /var/www/{webserver.local,test.webserver.local,homeserver.local}/
# mkdir /var/www/{webserver.local,test.webserver.local,homeserver.local}/htdocs/
и в каждой директории создадим файл index.html
# touch /var/www/{webserver.local,test.webserver.local,homeserver.local}/htdocs/index.html
Для хоста webserver.local в файл index.html впишем такие строчки:
# nano /var/www/webserver.local/htdocs/index.html
<html>
<head>
<title>webserver.local start page</title>
</head>
<body>
<p align="center">Welcome to webserver.local</p>
</body>
</html>
для test.webserver.local
# nano /var/www/test.webserver.local/htdocs/index.html
<html>
<head>
<title>test.webserver.local start page</title>
</head>
<body>
<p align="center">Welcome to test.webserver.local</p>
</body>
</html>
для homeserver.local
# nano /var/www/homeserver.local/htdocs/index.html
<html>
<head>
<title>homeserver.local start page</title>
</head>
<body>
<p align="center">Welcome to homeserver.local</p>
</body>
</html>
После всех проделанных действий необходимо перезапустить службу nginx
# rc-service nginx restart
и все хосты должны работать:
http://webserver.local
https://webserver.local
http://test.webserver.local
https://test.webserver.local
http://homeserver.local
https://homeserver.local





