Как настроить хостинг для двух сайтов, каждый из которых будет доступен по своему доменному имени на одном сервере?

Как я могу настроить виртуальный сервер с Ubuntu 20.04 и Nginx так, чтобы одновременно работал электронный библиотечный каталог на PHP 5, доступный по белому IP, и сайт на WordPress на PHP 7.4, доступный за пределами локальной сети? В настоящее время я пытаюсь сделать это с помощью виртуальной машины Ubuntu, но не могу осуществить доступ по белому IP. Я также рассматривал вариант использования Nginx на Windows. Что я делаю не так и в каком направлении стоит двигаться?
  • 26 декабря 2023 г. 7:47
Ответы на вопрос 5
Для настройки хостинга двух сайтов на одном сервере с разными доменными именами, вам потребуется выполнить следующие шаги:

1. Установите и настройте веб-сервер Nginx на своем сервере. Вы можете использовать команду `sudo apt install nginx` для установки Nginx на Ubuntu 20.04.

2. Создайте два виртуальных хоста в конфигурационных файлах Nginx, один для каждого сайта. Обычно файлы конфигурации виртуальных хостов размещаются в директории `/etc/nginx/conf.d/`. Вы можете создать два отдельных файла с расширением `.conf`, например `site1.conf` и `site2.conf`, и настроить каждый из них в соответствии с требованиями вашего сайта.

   Пример файла конфигурации `site1.conf` для PHP 5 и доступа по белому IP:
   ```
   server {
       listen 80;
       server_name example1.com;
       root /path/to/site1;
       index index.php;

       location / {
           try_files $uri $uri/ /index.php?$args;
       }

       location ~ \.php$ {
           fastcgi_pass unix:/path/to/php5.sock;
           fastcgi_index index.php;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }
   }
   ```

   Пример файла конфигурации `site2.conf` для WordPress на PHP 7.4 и доступа за пределами локальной сети:
   ```
   server {
       listen 80;
       server_name example2.com;
       root /path/to/site2;
       index index.php;

       location / {
           try_files $uri $uri/ /index.php?$args;
       }

       location ~ \.php$ {
           fastcgi_pass unix:/path/to/php7.4.sock;
           fastcgi_index index.php;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }
   }
   ```

   Обратите внимание, что вам нужно заменить `example1.com`, `example2.com` и пути к вашим сайтам и версиям PHP в конфигурациях выше.

3. Не забудьте перезапустить Nginx после внесения изменений в конфигурационные файлы с помощью команды `sudo service nginx restart`.

4. Для доступа по белому IP, убедитесь, что ваш сервер имеет открыте порт 80 в файерволле и настроена переадресация портов на вашем роутере, если вы находитесь за маршрутизатором.

5. Для доступа к вашему сайту WordPress извне локальной сети, убедитесь, что ваши сетевые настройки, файерволлы и роутеры позволяют внешний доступ к вашему серверу по порту 80.

После выполнения этих шагов вы должны иметь настроенные доменные имена для каждого из сайтов на вашем сервере.

Относительно вашего вопроса о виртуальной машине Ubuntu и доступе по белому IP, убедитесь, что правильно настроили сетевые настройки виртуальной машины и разрешили доступ к порту 80 через файерволлы и маршрутизаторы.

Использование Nginx на Windows также возможно, но настройка может отличаться от установки на Ubuntu. Установка Nginx на Windows обычно включает скачивание предварительно собранных пакетов и настройку путей к конфигурационным файлам. Вам след
Может нужно ставить nginx не на виртуальную Ubuntu, а на винду?

Сеть <-> Ubuntu <-> NGINX (как обратный прокси):
<-> Docker 1 + Старый сайт на WP (PHP 5).
<-> Docker 2 + Новый сайт на WP (любая версия PHP).

Если пользователь заходит на domen1 - ему показывается старый сайт, а если на domen2 - новый (необходимо настроить DNS-записи для доменов).
Зачем виртуалка ? Создаете еще один хост и направляете на нужную версию пхп, в случае nginx установите listen нужный айпи и локейшен php fastcgi_pass на fpm 7
Настроить надо nginx proxy pass, в нем уже укажете домены и куда их дальше переадресовывать
Необходимо указать для домена записи А со значением: 
111.222.333.444 - domain1.ru
111.222.333.444 - domain2.ru

У виртуалки может не быть доступа из сети (скорее всего). Можно запустить на винде и не мучаться если надо просто сделать чтоб работало.
Если по ипу есть доступ к виртуалке (не понятно) то вероятно надо настроить только DNS записи, если на виндовс то скорее всего надо смотреть в сторону NAT который прокинут не на виртуалку (у нее же другой локальный ип?)
Похожие вопросы