【问题标题】:Redirect a domain to a ip and port将域重定向到 ip 和端口
【发布时间】:2013-07-02 22:04:12
【问题描述】:

我有一个 node.js 服务器监听端口 4000

如何将我的域名:www.mydomain.com 重定向到 IP 和端口?域提供商只允许在重定向字段中使用不带端口号的 IP 地址。如果我进行 URL 重定向,则不会显示我方的名称。

请告诉我如何将其重定向到我的域?

121.12.12.123:4000    redirect to   www.mydomain.com

【问题讨论】:

  • 不清楚您要做什么。请更详细地描述。当浏览器访问 XXX 时,您希望发生什么?
  • 这不是您的提供商有困难:DNS 不会定向到特定端口。您可能会发现在端口 80 上运行网页并重定向到端口 4000 将完成这项工作并保留您的域名。
  • 你的问题有点复杂,你到底想要什么?如果你想将一个域重定向到一个 ip 和端口,你不能这样做,因为这是 DNS 的工作,如果你想将一个域重定向到你的 IP 和端口,你只需将端口放在地址中,宽度为冒号。
  • 是的,但是我的域名提供商不允许在 ip 输入字段中使用冒号
  • @Daniel 答案正确且有效。您应该将其标记为已解决。

标签: node.js redirect port


【解决方案1】:

HTTP 请求通常通过端口 80 进入。当您输入域但未指定端口时,它会自动连接到端口 80。您有几个选择。您可以以 root 身份运行您的 Node.js 服务器并让它监听 80 端口,但不建议这样做。

您还可以在端口 80 上设置 Nginx,并使用它来将代理请求反向到正在侦听端口 4000 的 Node.js 进程,但这会在您的堆栈中引入另一个组件来管理并引入一点开销每个请求。

我更喜欢处理这个问题的方式是在 iptables 中设置重定向(假设您使用的是 Linux)。

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 4000

这会将所有流量从端口 80 重定向到端口 4000,您正在侦听 Node.js 进程。

这允许您以非特权用户的身份运行您的 Node.js 进程,但仍会回答端口 80 上的请求。

完成此操作后,您只需将域指向服务器的 IP 地址,正常的 Web 请求就可以正常工作了。只需确保首先在任何防火墙上打开端口 80。

【讨论】:

  • 这对我很有帮助。谢谢
【解决方案2】:

试试这个代码

var httpProxy = require('http-proxy');
httpProxy.createProxyServer({target:'http://localhost:4000'}).listen(80);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 2014-05-17
    • 2021-11-13
    • 2021-04-28
    • 2014-07-02
    相关资源
    最近更新 更多