Настройка виртуальных хостов nginx в Gentoo

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *