我最近在home / myusername / myappname目录中安装了一个nodejs app(keystone)应用程序。
当我访问www.mydomain.com时,即使打开我的nodejs应用程序,也没有显示任何内容。
这些文件应该在哪里?
我正在运行ubuntu 16.04。
过去我使用过var / www文件夹,但我没有使用apache - 我是否需要手动创建此文件夹?
谢谢!
答案 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 / 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以启用更改。