#node.js #apache #websocket #socket.io #webserver
#node.js #apache #websocket #socket.io #веб-сервер
Вопрос:
У меня есть приложение NodeJS, запущенное на example.com:3000. Очевидно, что было бы непрезентабельно указывать пользователю вводить :3000. Я хочу, чтобы он работал на example.com , и я не могу установить для узла значение:80, так как мой интерфейс Apache PHP включен:80.
Я использую CentOS 8. Я создал файл с именем proxy.conf в /etc/httpd/conf.d и поместил в него следующие строки.
<VirtualHost *:80>
ErrorLog /var/log/httpd/error.log
CustomLog /var/log/httpd/access.log combined
ProxyRequests On
ProxyPass / http://localhost:3000
ProxyPassReverse / http://localhost:3000
</VirtualHost>
Но это просто переходит на мою обычную страницу без узла.
Ответ №1:
Вопрос в том, как apache узнает вас, когда вам нужен сервер PHP или когда вам нужен сервер узла. Вам нужно разделить их на ServerName
.
Вам нужен ServerName
атрибут, чтобы apache знал, что нужно отправить VirtualHost
его другому процессу.
<VirtualHost *:80>
// PHP Server
ServerName example.com www.example.com
</VirtualHost>
<VirtualHost *:80>
// Node Server
ServerName node.example.com
ErrorLog /var/log/httpd/error.log
CustomLog /var/log/httpd/access.log combined
ProxyRequests On
ProxyPass / http://localhost:3000
ProxyPassReverse / http://localhost:3000
</VirtualHost>
Кроме того, вам нужно будет установить node.example.com
DNS.