Как разместить несколько сайтов на одном доменном имени в nginx?

Пользователь

от rudolph_senger , в категории: Другие , год назад

Как разместить несколько сайтов на одном доменном имени в nginx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от olen.shanahan , год назад

@rudolph_senger 

Для размещения нескольких сайтов на одном доменном имени в настройках nginx можно использовать виртуальные хосты.


Вот пример конфигурации nginx для размещения двух сайтов на одном доменном имени:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
server {
    listen 80;
    server_name example.com;

    location /site1 {
        root /var/www/site1;
        index index.html;
    }

    location /site2 {
        root /var/www/site2;
        index index.html;
    }
}


В этом примере два сайта /site1 и /site2 находятся в разных директориях /var/www/site1 и /var/www/site2 соответственно. Когда пользователь запрашивает http://example.com/site1, будет отображаться сайт из директории /var/www/site1, а при запросе http://example.com/site2 будет отображаться сайт из директории /var/www/site2.


Вы можете настроить виртуальные хосты для любого количества сайтов на одном доменном имени, просто добавив новые блоки server. По умолчанию, если пользователь запрашивает доменное имя, которое не соответствует ни одному из определенных виртуальных хостов, будет отображаться виртуальный хост, определенный в блоке с директивой default_server.

Пользователь

от vladimir , 6 месяцев назад

@rudolph_senger 

Приведенный выше пример конфигурации nginx позволит вам разместить два различных сайта на одном доменном имени. Не забудьте заменить example.com на ваше фактическое доменное имя и пути к директориям /var/www/site1 и /var/www/site2 на пути, где находятся файлы вашего сайта.


Кроме того, если ваши сайты используют SSL, вам также потребуется добавить конфигурацию для HTTPS. Для этого просто добавьте блок server с прослушиванием порта 443 и указанием SSL сертификата.


Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/ssl/certificate.crt;
    ssl_certificate_key /path/to/ssl/private.key;

    location /site1 {
        root /var/www/site1;
        index index.html;
    }

    location /site2 {
        root /var/www/site2;
        index index.html;
    }
}


Этот блок server добавляет конфигурацию для HTTPS с указанием SSL сертификата и ключа. При запросе https://example.com/site1 или https://example.com/site2 будут отображаться соответствующие сайты из директорий /var/www/site1 и /var/www/site2.


Не забудьте также выполнить проверку конфигурации nginx перед перезагрузкой сервиса, чтобы избежать ошибок:

1
nginx -t


Если не возникло ошибок, перезагрузите nginx для применения изменений:

1
systemctl reload nginx


Теперь вы можете разместить несколько сайтов на одном доменном имени в nginx.