Прокси-приложение узла / реагирования на сервере apache - PullRequest
0 голосов
/ 31 мая 2019

Используя навсегда запустить сервер узлов на виртуальной машине, я не могу запустить приложение без явного добавления порта в URL-адресе, например, так: URL.com:8080 Если я не использую порт в URL, я загружаю файловую структуру приложения.

Действия по воспроизведению: у меня есть приложение create-реагировать на приложение. На виртуальном сервере я запускаю 'npm run build', чтобы убедиться, что у меня есть сборка для обслуживания. Затем я запускаю вечный запуск в корне приложения.

Приведенный ниже код должен содержать все необходимые данные. Я могу предоставить больше, если вам нужно.

Я потратил так много времени на настройку файла .conf, чтобы попробовать разные конфигурации, но, похоже, не могу его получить. Я использую его и успешно размещаю два статических html-сайта, но не приложение этого узла.

Package.json:

...
"main":"server/index.js",
"proxy":"http://localhost:8080"
...

Apache url.conf:

<VirtualHost *:80>
    ServerName URL.com
    ServerAlias URL.com:8080/
    DocumentRoot /var/www/nameOfApp/
<Directory />
    Options -Indexes +FollowSymLinks
    AllowOverride All
</Directory>
<Directory /var/www/nameOfApp/public>
    Options +Indexes +FollowSymLinks +MultiViews
    AllowOverride All
</Directory>
</VirtualHost>

Файл узла сервера с использованием экспресс:

app.use(express.static(`${__dirname}/../build`));

Я также убедился, что у меня включены модули, позволяющие проксировать. Поэтому я думаю, по сути, мне нужно запросить этот сайт, а не указывать: 8080 в конце.

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Конфигурация, которая в конечном итоге сработала, была такой простой:

<VirtualHost *:80>
    ServerName yourdomain.com
    ProxyPreserveHost on
    ProxyPass / http://localhost:8080/
</VirtualHost>

Похоже, я слишком усложнил попытку создания сложного прокси-сервера, но решением было очень просто добавить это в конфигурацию для узла.приложение, а затем запуск sudo systemctl перезапустите apache2, и все заработало прекрасно.

0 голосов
/ 31 мая 2019

Apache и NodeJS - это 2 разных приложения.Вы взаимодействуете с ними, отправляя запрос на порт, который они слушают.В нашем случае

Apache прослушивает порт 80

Ваше приложение NodeJS прослушивает порт 8080

Так что все запросы к порту 80 будутбудет обрабатываться Apache, и поскольку у вас нет index.html, Apache по умолчанию просто перечислит файлы и каталог (параметры индексов).До этого момента приложение вашего узла ничего не знало о вашем запросе.

Итак, вам нужно определить некоторую конечную точку, скажем, url.com/node, и сказать Apache переадресовать весь запрос этой конечной точки.на порт 8080 и позвольте приложению вашего узла выполнить эту работу.

Как это сделать?

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

Лучшие практики при запуске Node.js спорт 80 (Ubuntu / Linode)

Node.js + Nginx - Что теперь?

Надеюсь, это указывает на правильное направление.

...