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

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

当我访问www.mydomain.com时,甚至在打开我的nodejs应用程序之后,什么都不显示。

这些文件应该放在哪里?

我正在运行的Ubuntu 16.04。

在过去,我曾与一个var / www文件夹,但我没有使用Apache – 我需要手动创build此文件夹?

谢谢!

为了使您的应用程序可见,必须运行(明显),并且可以在端口80上访问(如果您希望在不向URL添加端口号的情况下可用)。

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

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

但是,如果你的应用程序正在监听,例如端口3000,那么你应该能够访问它作为http://www.example.com:3000/

另外,请确保您的域配置正确。 这是www子域的IPv4(或AAAA for IPv6)的记录应该等于您的服务器可公开访问的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。

您可以在这里找到更多配置反向代理的选项:

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

1.启用mod_proxy

你可以通过a2enmond来做到这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 

这基本上说:“重定向所有流量从根/http://0.0.0.0:9000 。主机0.0.0.0:9000是您的应用程序正在运行的地方。

最后重启apache以启用更改。