【问题标题】:Where do I put my Node JS app so it is accessible via the main website?我应该将我的 Node JS 应用程序放在哪里,以便可以通过主网站访问它?
【发布时间】:2017-04-06 09:07:20
【问题描述】:

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

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

这些文件应该在哪里?

我正在运行 ubuntu 16.04。

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

谢谢!

【问题讨论】:

    标签: node.js ubuntu ubuntu-16.04 keystonejs


    【解决方案1】:

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

    只要它在运行,它在磁盘上的哪个位置都没有关系。

    您不需要 Apache 或 nginx 或任何其他服务器。您的 Node 应用程序可能会侦听端口 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-available/default

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

    • /etc/nginx/sites-available/example

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

    修改配置后需要重启nginx。

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

    【讨论】:

    • 我去了example.com:3000,它正在工作!如何更改它正在侦听的端口号,还是您认为将 nginx 设置为代理更好?
    • @tkwitten 查看我的更新答案,了解如何使正确的端口可用。
    【解决方案2】:

    您需要在 Apache 和您的 Node.js 应用程序之间建立一个代理,因为 Node.js 有一个内置服务器。假设您的 Node.js 应用程序在 9000 端口上提供服务。然后你需要做一个代理,将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
    

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

    最后重新启动 apache 以启用更改。

    【讨论】:

      猜你喜欢
      • 2012-09-10
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 2021-09-09
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 2023-01-18
      相关资源
      最近更新 更多