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

时间:2018-09-11 14:41:16

标签: node.js apache server httpd.conf proxypass

我正尝试在同一服务器上运行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文件的末尾,我看到了 this:

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
#   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#   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 :(得分:3)

我已经有一段时间没有使用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进程。

您现在应该可以对其进行测试,并且如果您的配置语法正确,它应该可以工作。

答案 1 :(得分:0)

与Apache2相比,我个人更喜欢Nginx,但是您可以使用其中任何一个。

对于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

PS:我使用了this链接中的apache conf示例