Спочатку зупиняємо всі програми які запущені на порту :80 і запускаємо програму на іншому порту. У мене запущено дві програми одна на порту :8080 та інша на порту :8081.
Потім інсталюємо Apache
sudo apt-get install apache2
Перевіряєм apache
sudo service apache2 status
Якщо сервер зупинено, тоді запускаємо його
sudo service apache2 start
Якщо програма використовує socket.io, не забудьте також увімкнути кілька модів apache:
a2enmod proxy
a2enmod proxy_balancer
a2enmod proxy_express
a2enmod proxy_http
Переходжу до папки
cd /etc/apache2/sites-available
І редагую файл
nano 000-default.conf
<VirtualHost *:80>
ServerName sub.{domain}.com
<Location "/">
ProxyPreserveHost On
ProxyPass http://localhost:8080/
ProxyPassReverse http://localhost:8080/
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName {domain}.com
<Location "/">
ProxyPreserveHost On
ProxyPass http://localhost:8081/
ProxyPassReverse http://localhost:8081/
</Location>
</VirtualHost>
Зберігаємо та перезапуск apache2
service apache2 reload
Перевіряємо обидва сайти повинні бути доступні.
Для сокетів
потрібно виконати наступне
sudo a2enmod rewrite
a2enmod proxy_wstunnel
І конфіг має виглядати так
<VirtualHost *:80>
ServerName sub.{domain}.com
RewriteEngine on
RewriteCond ${HTTP:Upgrade} websocket [NC]
RewriteCond ${HTTP:Connection} upgrade [NC]
RewriteRule .* "ws:/localhost:8080/$1" [P,L]
<Location "/">
ProxyPreserveHost On
ProxyPass http://localhost:8080/
ProxyPassReverse http://localhost:8080/
</Location>
</VirtualHost>
У конфіг ми додали тільки
RewriteEngine on
RewriteCond ${HTTP:Upgrade} websocket [NC]
RewriteCond ${HTTP:Connection} upgrade [NC]
RewriteRule .* "wss:/localhost:8080/$1" [P,L]