将所有请求通过管道传输到特定端口 - 节点 js 应用程序

pipe all requests to a particular port - node js application

我正在尝试 运行 node jsapache 在同一个服务器上

我正在尝试将所有请求传送到特定端口(例如:example.com:80 到 example.com:3000)。

为此,我更改了位于“/etc/httpd/conf/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

我该怎么办????

我有一段时间没有使用 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 启用新站点配置。然后通过运行sudo service apache2 restart.

重启apache2进程

您现在应该可以测试它了,如果您的配置语法正确,它应该可以工作。

我个人更喜欢 Nginx 而不是 Apache2,但您可以使用它们中的任何一个。

对于 apache2,您应该启用 proxyproxy_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

P.S:我使用了 this link

中的 apache conf 示例