Запустите NodeJs и Apache вместе с двумя отдельными доменами

У меня есть сервер Linux (VPS) с двумя доменами и двумя веб-приложениями, одно из которых запрограммировано с помощью NodeJS (приложение для чата), а другое - PHP.

Итак, я хочу запустить два приложения в разных доменах на одном сервере. Я пробовал много способов сделать это, но все эти методы работают с одним доменом и несколькими URL-адресами, например: https://example.com и https://example.com/node.

Но я хочу вот что: https://nodeappexample.com и https://apacheappexample.com.

Привет

Вам понадобится VirtualHosts, по одному на каждый домен. Проблема, с которой вы столкнетесь, заключается в том, что поскольку они оба являются https, вам придется использовать SNI (исследование по этому поводу) для своей части SSL. Если вы не можете использовать SNI, вам придется использовать 1 IP-адрес на домен для разделения SSL между обоими доменами.

Nic3500 20.04.2018 19:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
492
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете выделенный или VPS, например DigitalOcean или любой другой сервер, и планируете разместить несколько веб-сайтов на одном сервере, то вот как вы можете сделать это с помощью веб-сервера Apache HTTP или Nginx.

Предполагается, что вы уже сопоставили DNS со своим хостом, например, следующие два домена, которые я сопоставил с DigitalOcean.

bestflare.com
usefulread.com

Прежде чем вы это реализуете, чтобы дать вам представление о том, как это работает. Концепция наличия нескольких веб-сайтов на одном экземпляре называется виртуальным сервером. Конфигурация виртуального сервера определяется в конфигурации веб-сервера и на основе сервера / IP-адреса запрос пересылается в соответствующий корень документов.

Настроить виртуальный хост в Apache для размещения нескольких доменов Войдите в HTTP-сервер Apache Перейдите в папку apache conf. (при установке по умолчанию - здесь /etc/httpd/conf/httpd.conf) Сделайте резервную копию файла httpd.conf Создайте контейнер VirtualHost, как показано ниже, для двух доменов.

<VirtualHost *:80>
ServerAdmin [email protected]
   DocumentRoot /opt/htdocs/bestflare
   ServerName bestflare.com
   ErrorLog logs/bestflare.com-error_log
   CustomLog logs/bestflare.com-access_log common
</VirtualHost>
<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot /opt/htdocs/usefulread
   ServerName usefulread.com
   ErrorLog logs/usefulread.com-error_log
   CustomLog logs/usefulread.com-access_log common
</VirtualHost>

Примечание. Измените значение ServerAdmin, DocumentRoot, ServerName, ErrorLog, CustomLog в соответствии с вашими требованиями.

Перезапустите Apache HTTP и проверьте оба URL-адреса.

Настроить виртуальный хост в Nginx для размещения нескольких доменов Войдите на сервер Nginx Перейдите в папку virtual.conf (по умолчанию - вы найдете ее здесь /etc/nginx/conf.d/virtual.conf) Сделайте резервную копию virtual.conf Создайте блокировку сервера для обоих URL-адресов, как показано ниже.

server {
listen 80;
   root /opt/htdocs/bestflare;
index index.html index.htm;
   server_name bestflare.com;
   location / {
       try_files $uri $uri/ =404;
   }
}
server {
   listen 80;
   root /opt/htdocs/usefulread;
   index index.html index.htm;
   server_name usefulread.com;
   location / {
       try_files $uri $uri/ =404;
   }
}

Примечание. Измените значение для root, server_name в соответствии с вашими требованиями.

Перезапустите Nginx и проверьте оба URL Это было краткое руководство по размещению нескольких доменов в одном экземпляре веб-сервера, таком как Apache или Nginx. Когда ваш сайт заработает, не забудьте проверить его на наличие уязвимостей.

Спасибо за ответ, хочу задать вам несколько вопросов: DocumentRoot - это расположение приложения? а что насчет NodeJS?

Ghadeer R. Majeed 20.04.2018 19:29

<VirtualHost *: 80> DocumentRoot / var / www / site ServerName example.com </VirtualHost> // для корня документа

Mohammad Raheem 20.04.2018 19:34

<VirtualHost node.example.com:80> ServerName node.example.com ProxyPass / локальный: 8000 connectiontimeout = 5 timeout = 30 # необязательные настройки тайм-аута </VirtualHost> // Вы можете использовать прокси-сервер для Nodejs

Mohammad Raheem 20.04.2018 19:35

@MohammadRaheem Я не могу найти этот файл /etc/httpd/conf/httpd.conf !! (работает на debian 9)

Ghadeer R. Majeed 20.04.2018 21:09

/etc/apache2/apache2.conf --- Debian хранит свои файлы конфигурации Apache 2.0 в каталоге / etc / apache2. Обычно основной файл конфигурации Apache называется httpd.conf.

Mohammad Raheem 21.04.2018 02:28

Я нашел этот файл /etc/apache2/apache2.conf, а в /etc/apache2/ нет файла с именем httpd.conf, поэтому я создал его, а затем Include в файле /etc/apache2/apache2.conf, это хорошо?

Ghadeer R. Majeed 21.04.2018 08:28

Теперь все в порядке, и все виртуальные хосты, которые я добавил, работают хорошо, но приложение узла !, после использования ProxyPass / localhost:8000 connectiontimeout=5 timeout=30, оно возвращает ошибку, когда я пытаюсь перезагрузить сервер Apache!

Ghadeer R. Majeed 21.04.2018 10:37

Другие вопросы по теме