我在哪里放置我的Node JS应用程序,以便可以通过主网站访问它?

时间:2016-11-22 15:46:51

标签: node.js ubuntu ubuntu-16.04 keystonejs

我最近在home / myusername / myappname目录中安装了一个nodejs app(keystone)应用程序。

当我访问www.mydomain.com时,即使打开我的nodejs应用程序,也没有显示任何内容。

这些文件应该在哪里?

我正在运行ubuntu 16.04。

过去我使用过var / www文件夹,但我没有使用apache - 我是否需要手动创建此文件夹?

谢谢!

2 个答案:

答案 0 :(得分:2)

要使您的应用程序可见,它必须在(显然)运行并可在端口80上访问(如果您希望它在没有向URL添加端口号的情况下可用)。

只要它正在运行,它在磁盘上的位置并不重要。

您不需要Apache或nginx或任何其他服务器。您的节点应用程序可以在端口80上侦听。但是,它可以侦听其他端口,而您的其他服务器(Apache,nginx等)可以将请求代理到该端口。

但是,如果您的应用正在收听,例如在端口3000,您应该可以http://www.example.com:3000/访问它。

另外,请确保您的域配置正确。它是www子域的IPv4(或IPv6的AAAA)记录应该等于服务器的公共可访问IP地址。

确保您使用的端口未被防火墙阻止。

更新

要了解如何使用Keystone设置端口,请参阅:

可以在配置中进行更改,也可以使用以下命令运行应用程序:

PORT=80 node yourApp.js

而不是:

node yourApp.js

但请记住,要使用低于1024的端口号,您通常需要以root身份运行程序(或添加更复杂的特殊权限)。

这也意味着即使您有更多域名,这也是您可以在此服务器上运行的唯一应用程序。

如果您不想以root身份运行或者想要托管更多应用程序,最简单的方法是安装nginx并代理请求。这样的配置称为“反向代理” - 使用该短语搜索信息和教程是很好的。

最简单的nginx配置是这样的:

server {
    listen 80;
    server_name www.example.com;
    location / {
        proxy_pass http://localhost:3000;
    }
}

您可以将其设置为:

  • 的/ etc / nginx的/位点可用/默认

或在不同的文件中,例如:

  • 的/ etc / nginx的/位点可用的/示例

然后符号链接为/ etc / nginx / sites-enabled / example

更改配置后需要重新启动nginx。

您可以在此处找到有关配置反向代理的更多选项:

答案 1 :(得分:0)

您需要在Apache和Node.js应用程序之间建立代理,因为Node.js有一个内置服务器。在9000端口上提供您的Node.js应用程序。然后,您需要创建一个代理,将80端口中的所有流量重定向到运行Node.js应用程序的9000端口。

<强> 1。启用mod_proxy

您可以通过a2enmond完成此操作。

sudo a2enmod proxy
sudo a2enmod proxy_http

<强> 2。设置代理

编辑/etc/apache2/sites-available/example.com.conf文件并添加以下行:

ProxyRequests Off
Order deny, allow from All
ProxyPass / http://0.0.0.0:9000 ProxyPassReverse / http://0.0.0.0:9000

这基本上说:&#34;将所有流量从根/重定向到http://0.0.0.0:9000。主机0.0.0.0:9000是您的应用运行的位置。

最后重启apache以启用更改。