Как я могу запустить NodeJS и Apache вместе с файлом виртуального хоста Apache на Centos8?

#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.