我有一个监听 4000 端口的 node.js 服务器
如何将我的域名:www.mydomain.com 重定向到 IP 和端口?域提供商只允许在重定向字段中使用不带端口号的 IP 地址。如果我进行 URL 重定向,则不会显示我方的名称。
请让我知道如何将其重定向到我的域?
121.12.12.123:4000 redirect to www.mydomain.com
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。
试试这个代码
var httpProxy = require('http-proxy');
httpProxy.createProxyServer({target:'http://localhost:4000'}).listen(80);