Я лично предпочитаю Nginx, а не Apache2, но вы можете использовать любой из них.
для apache2 вы должны включить proxy
и proxy_http
модули:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo service apache2 restart
, затем вы должны добавитьфайл конфигурации для Apache, обычно называемый /etc/apache2/sites-available/example.com.conf
: (вы можете удалить часть каталога, если вам это не нужно)
<VirtualHost *:80>
ServerName example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location / >
ProxyPass http://127.0.0.1:3000
ProxyPassReverse http://127.0.0.1:3000
</Location>
<Directory "/var/www/example.com/html">
AllowOverride All
</Directory>
</VirtualHost>
, затем включите конфигурацию и перезапустите apache2 с помощью:
sudo a2ensite example.com
sudo services apache2 restart
для конфигурации Nginx вы должны добавить эти строки в /etc/nginx/site-available/your-app.conf
:
upstream app {
server 0.0.0.0:3000;
}
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://app/;
proxy_set_header Host $http_host;
}
access_log /var/log/nginx/app-access.log;
error_log /var/log/nginx/app-error.log info;
}
, затем запустить:
sudo ln -s /etc/nginx/sites-available/your-app.conf /etc/nginx/sites-enabled/
и затем:
# remove default config symlink from sites-enabled dir
rm /etc/nginx/sites-enabled/default
# test if config is OK:
sudo nginx -t
# restart the nginx:
sudo systemctl restart nginx
PS: я использовал пример apache conf из this link