我拥有一台运行 whm / cpanel 的服务器,我最近一直在试验 node.js。我有一个小节点测试服务器正在运行,我想指向一个域。到目前为止,我一直在使用 whm 创建帐户和处理域,但这是一个不同的场景,当有多个其他域指向其他域时,我对如何使域指向我的服务器上的某个东西知之甚少我的服务器上同时有不同的东西。
谢谢
好的,我从未尝试过,但您可以在 .htaccess 文件中使用重写规则,并将所有内容重写为转到运行 node.js 服务器的端口 8000。
所以首先,设置你的 node.js 服务器监听 8000 端口。
然后,像往常一样在 cpanel 中创建您的域,并在 doc 根目录中添加一个带有此重写的 .htaccess 文件:
RewriteRule ^ "\ http: \ / \ / 127.0.0.1 \:% (8000) REQUEST_URI" [P, QSA, L]
这应该只是在内部将所有内容转发到 node.js 将处理它的端口 8000。但我不知道持久连接/websockets 将如何使用这种策略。在这些情况下,直接访问服务器上的端口 8000 可能会更好地跳过 apache。
这有点棘手,因为 cpanel 将使用 apache 来配置域,而 apache 毫无疑问已经占用了 80 端口,所以你不能在 apache 和 node.js 之间共享 80 端口。您将无法通过 cpanel 进行配置。
您可以将域指向您的服务器并让节点侦听另一个端口,例如 8000。
所以apache/cpanel处理80和443端口的请求,node处理8000端口的请求。
很可能在一个机器上运行多个 Web 服务器,但它们每个都需要自己的端口
我设法做到了:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_PORT} !^3000$
RewriteRule ^ http://%{HTTP_HOST}:3000%{REQUEST_URI} [P,QSA,L]
</IfModule>
其他任何事情都对我不起作用:(
在这里,我检查端口是否不是 3000,如果协议不是 https,那么我将域指向端口 3000(您可以将使用的端口与 node.js 一起使用)您可以删除RewriteCond %{HTTPS} !=on
以防万一您不关心检查为协议。
我在本地进行了一些研发,但在生产中我相信我会使用 nginx + node 而不是 apache。