我有一个node.js服务器侦听端口4000
如何将我的域名:www.mydomain.com重定向到IP和端口?域提供程序仅允许在重定向字段中没有portnumber的ip地址。如果我进行URL重定向,则不显示我方的名称。
请告诉我如何将其重定向到我的域名?
121.12.12.123:4000 redirect to www.mydomain.com
答案 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);