Для настройки глобальных настроек Nginx, чтобы корректно обрабатывать несколько сайтов, каждый из которых запущен в своем Docker контейнере на одном VPS сервере, вам потребуется создать отдельный файл конфигурации для каждого сайта.
1. Создайте отдельный файл конфигурации для каждого сайта в директории `/etc/nginx/conf.d/`. Назовите файлы по доменным именам, чтобы было проще их идентифицировать (например, `example.com.conf`, `example2.com.conf` и т.д.).
2. В каждом файле конфигурации определите настройки сервера Nginx для соответствующего сайта. Это может включать настройки прокси, указание корневого каталога, настройки SSL и т.д. Пример конфигурации для одного сайта может выглядеть следующим образом:
```
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://site1:8000;
}
}
```
3. Вам также потребуется добавить соответствующие записи в файл `/etc/hosts` на вашем сервере, чтобы завести каждое доменное имя на IP-адрес сервера. Например:
```
127.0.0.1 example.com
127.0.0.1 example2.com
```
4. После создания файлов конфигурации перезапустите сервер Nginx, чтобы изменения вступили в силу:
```
sudo systemctl restart nginx
```
Теперь Nginx будет перенаправлять запросы к каждому сайту на соответствующий Docker контейнер, основываясь на доменных именах.
Чтобы обеспечить адаптивность конфигурации для добавления новых сайтов и доменных имен, вы можете разработать механизм автоматического создания файлов конфигурации на основе ваших требований.
Относительно привязки к разным портам для каждого сайта, есть несколько вариантов настройки.
1. Вы можете использовать разные порты для каждого Docker контейнера и настроить прокси-прокси в Nginx для перенаправления запросов к соответствующим портам. Например:
```
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://site1:8000;
}
}
```
2. Если ваши Docker контейнеры слушают на одном и том же порту, вы можете использовать адаптивность конфигурации Nginx с помощью переменных. Например:
```
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://$host:8000;
}
}
```
Таким образом, вы сможете обрабатывать несколько сайтов, запущенных в разных Docker контейнерах на одном VPS сервере, с помощью одного экземпляра Nginx, используя соответствующие файлы конфигурации и настройки прокси.