将域重定向到IP和端口

时间:2013-07-04 21:04:59

标签: node.js redirect port

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

如何将我的域名:www.mydomain.com重定向到IP和端口?域提供程序仅允许在重定向字段中没有portnumber的ip地址。如果我进行URL重定向,则不显示我方的名称。

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

121.12.12.123:4000    redirect to   www.mydomain.com

2 个答案:

答案 0 :(得分:5)

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。

答案 1 :(得分:1)

试试这段代码

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