У меня есть сервер Linux (VPS) с двумя доменами и двумя веб-приложениями, одно из которых запрограммировано с помощью NodeJS (приложение для чата), а другое - PHP.
Итак, я хочу запустить два приложения в разных доменах на одном сервере. Я пробовал много способов сделать это, но все эти методы работают с одним доменом и несколькими URL-адресами, например: https://example.com и https://example.com/node.
Но я хочу вот что: https://nodeappexample.com и https://apacheappexample.com.
Привет






Если вы используете выделенный или 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?
<VirtualHost *: 80> DocumentRoot / var / www / site ServerName example.com </VirtualHost> // для корня документа
<VirtualHost node.example.com:80> ServerName node.example.com ProxyPass / локальный: 8000 connectiontimeout = 5 timeout = 30 # необязательные настройки тайм-аута </VirtualHost> // Вы можете использовать прокси-сервер для Nodejs
@MohammadRaheem Я не могу найти этот файл /etc/httpd/conf/httpd.conf !! (работает на debian 9)
/etc/apache2/apache2.conf --- Debian хранит свои файлы конфигурации Apache 2.0 в каталоге / etc / apache2. Обычно основной файл конфигурации Apache называется httpd.conf.
Я нашел этот файл /etc/apache2/apache2.conf, а в /etc/apache2/ нет файла с именем httpd.conf, поэтому я создал его, а затем Include в файле /etc/apache2/apache2.conf, это хорошо?
Теперь все в порядке, и все виртуальные хосты, которые я добавил, работают хорошо, но приложение узла !, после использования ProxyPass / localhost:8000 connectiontimeout=5 timeout=30, оно возвращает ошибку, когда я пытаюсь перезагрузить сервер Apache!
Вам понадобится VirtualHosts, по одному на каждый домен. Проблема, с которой вы столкнетесь, заключается в том, что поскольку они оба являются https, вам придется использовать SNI (исследование по этому поводу) для своей части SSL. Если вы не можете использовать SNI, вам придется использовать 1 IP-адрес на домен для разделения SSL между обоими доменами.