У меня есть сервер с установленным Parallels Plesk в качестве панели управления сервером, apache2 (с mod_proxy и mod_http_proxy), nginx и Node.js. На этом сервере у меня несколько доменов и поддоменов, но только один IP.
Если я запустил приложение узла, например, порт 1337
он будет глобально доступен для всех доменов и поддоменов на этом сервере / IP с этим портом. ( домен A.com: 1337
, sub.domainA.com:1337
, domainB: 1337
)
Через Plesk я могу изменить apache2 vhost.conf для domainA. com
. Я могу использовать следующий код для перенаправления порта 80 на порт 1337 для domainA.com
: (Я бы предпочел использовать nginx, но настройки в Plesk для быстрой настройки nginx как-то ограничены)
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:1337/
ProxyPassReverse / http://localhost:1337/
<Location />
Order allow,deny
Allow from all
</Location>
Угу, я могу получить доступ к моему приложению узла, работающему с порта 1337 по порт 80 на domainA.com
!
НО: Порт 1337 по-прежнему доступен напрямую во всех доменах моего Сервера. Не только domainA.com:1337
показывает мое приложение узла, sub.domainA.com:1337
и domainB.com:1337
покажет мое приложение, тоже.
Совершенно логично, почему этот порт по-прежнему доступен везде, но как я могу «заблокировать» этот порт на других доменах?
В лучшем случае, domainA.com:1337
перенаправляет на domainA.com
и sub.domainA.com:1337
/ domainB.com:1337
ничего не покажут.
Возможно ли это как-то с моей настройкой?
Если это возможно с nginx вместо apache - почему бы и нет! Я использовал apache mod_proxy только потому, что его было проще настроить в Plesk.
Plesk теперь имеет бесперебойную поддержку Node.JS - и его хостинг, подписка и т.д. совместимы. http://ext.plesk.com/packages/28f799af-1ff4-4bb8-9c87-a04f0f23d32e-jxcore-support