передать все запросы на конкретный порт - приложение узла js - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь запустить node js и apache на одном сервере для этого

Я пытаюсь передать все запросы на определенный порт (например: example.com:80 на example.com:3000).

Для этого я изменил файл httpd.conf, расположенный в "/etc/httpd/conf/httpd.conf"

Добавлены эти строки в конец

<VirtualHost *:80>
    ServerName mysite.com
    ProxyPreserveHost on
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
</VirtualHost>

и перезапущен с помощью sudo service httpd restart

но ничего не изменилось.

Доступно еще 2 файла httpd.conf ->

/usr/local/apache/conf/httpd.conf
/etc/httpd/conf/httpd.conf
/etc/apache2/conf/httpd.conf

в конце /etc/apache2/conf/httpd.conf файла, который я видел это:

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
#   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#   DO NOT EDIT. AUTOMATICALLY GENERATED.  USE INCLUDE FILES IF YOU NEED TO MAKE A CHANGE
#   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

Я не могу понять строку USE INCLUDE FILES IF YOU NEED TO MAKE A CHANGE.

Что мне делать ????

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Я лично предпочитаю 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

0 голосов
/ 14 сентября 2018

Я давно не пользовался Apache2, поскольку обычно использовал Nginx для прокси-приложений моих Node.JS-приложений.

Вам следует скопировать конфигурацию сайта по умолчанию из /etc/apache2/sites-available/000-default.conf. (Команда: sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite.com.conf).

Затем поместите имеющуюся там конфигурацию в новый файл. Отредактируйте то, что требует редактирования, затем включите новую конфигурацию сайта, запустив sudo a2ensite mysite.com.conf Затем перезапустите процесс apache2, запустив sudo service apache2 restart.

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

...