🌐 Как разместить несколько сайтов на Nginx с одним и тем же доменом (FQDN)

by itisgood
Если вы хотите использовать одно и то же полное доменное имя, например api.itisgood.ru, для обслуживания нескольких сайтов или API, это руководство поможет вам.
Если у вас есть два сайта, размещенные на разных серверах в вашей среде, например, для продаж и бухгалтерского учета, ваши клиенты должны будут сделать следующее в браузере, чтобы получить доступ к различным сайтам.
Для доступа к продажам https://api.itisgood.ru/sales 

Для доступа к бухгалтерии https://api.itisgood.ru/accounts
Как видите, мы используем одно и то же полное доменное имя для обслуживания разных сайтов, которые различаются по /sales и /accounting.
Это сэкономит вам больше общедоступных IP-адресов и правил брандмауэра, если он у вас один в вашей среде.
Мы надеемся, что Nginx уже установлен и работает.
--- Установка Nginx на Ubuntu / Debian ------
$ sudo apt -y install nginx
$ sudo systemctl enable --now nginx

--- Установка Nginx на CentOS / Fedora ------
$ sudo yum -y install nginx
$ sudo systemctl enable --now nginx

--- Установка на Arch Linux / Manjaro ------
$ sudo pacman -S nginx
$ sudo systemctl enable --now nginx

Шаг 1: Измените основной файл конфигурации Nginx

Откройте файл конфигурации Nginx и добавьте следующую строку в часть http.

Убедитесь, что она находится внутри фигурных скобок http.

http {
....
......

include /etc/nginx/sites.d/*.conf;
}
Это добавляет файлы конфигурации в /etc/nginx/sites.d/ для nginx, чтобы система могла читать и работать с ними.

Шаг 2: Создайте основной файл конфигурации сайта

Давайте теперь добавим файл конфигурации FQDN нашего основного сайта в /etc/nginx/sites.d

$ sudo vim https://api.itisgood.ru

server {
  listen 80;
  server_name  https://api.itisgood.ru;
  return 301 https://api.itisgood.ru$request_uri;
}
 
server {
  listen 443 ssl http2;
  server_name https://api.itisgood.ru; 
  modsecurity_transaction_id "api.itisgood.ru-$request_id"; 
  access_log           /var/log/nginx/test-api-access.log; 
  error_log            /var/log/nginx/test-api-error.log; 
  include              /etc/nginx/default.d/api.itisgood.ru/*.conf;
}

Конкретные сайты будут расположены в /etc/nginx/default.d/itisgood.ru/ и, как вы можете заметить, это было включено в наш файл конфигурации.

Шаг 3. Создание конфигураций маршрутизации сайта

Теперь создайте сайты в каталоге /etc/nginx/default.d/api.api.itisgood.ru/, как указано в конфигурации выше.

В этой настройке мы создадим один для sales:

cd /etc/nginx/default.d/api.itisgood.ru
Эта конфигурация будет перенаправлять трафик на сервер 1 (192.168.55.60), на котором размещен сайт sales, прослушивающий порт 8443.
$ sudo vim sales.conf
location /sales/ {
  proxy_http_version 1.1;
  proxy_pass https://192.168.55.60:8443/sales/;
  proxy_cache_bypass $http_upgrade;
  proxy_set_header Connection 'upgrade';
  proxy_set_header Upgrade $http_upgrade;
}
$ sudo vim accounts.conf 
location /accounts/ {
   proxy_http_version 1.1;
   proxy_pass https://192.168.55.63:8080/accounts/;
   proxy_cache_bypass $http_upgrade;
   proxy_set_header Connection 'upgrade';
   proxy_set_header Upgrade $http_upgrade;
}
Это все, что вам нужно для настройки вашего nginx на прокси ваших сайтов или API с использованием того же FQDN.


 

You may also like

Leave a Comment