Руководство по созданию виртуальных хостов для 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