重定向到内部本地ip和端口,不使用/etc/hosts (nginx)



我有一个diy(穷人的)NAS,我可以通过使用ip:192.168.0.2:1111访问我的家庭网络中的文件浏览器

我可以修改每个设备中的/etc/hosts,将my-fancy-filebrowser-url.com重定向到192.168.0.2:1111

但是,我想找到一个不涉及修改网络中每个设备的/etc/hosts的替代方案。我也不想设置本地dns服务器,因为它可能会减慢互联网域名的解析速度,我使用8.8.8.81.1.1.1来更快地解析域名。

我发现其中一个选择是使用nginx。我买了一个域名,设为mydomain.com我有一个ipv6VPS服务器。我使用了cloudflare将url重定向到我的服务器ipv6我已经安装了nginx到我的VPS,我已经创建了这个配置文件:

http {
# redirect to my router page
server {
listen      [d6b6:8760:97ec:ea7a:562c:c954:bb8d:6e41]:80;
return 302  http://192.168.0.1;
}
# redirect to filebrowser
server {
listen      [d6b6:8760:97ec:ea7a:562c:c954:bb8d:6e42]:80;
return 302  http://192.168.0.2:1111;
}
}

重定向到我的路由器管理页面如预期的那样完美地工作(对于任何感兴趣的人,我将cloudflaresubdomain.mydomain.com指向ipv6地址)。但文件浏览器不是。我怀疑这是因为我试图指定要重定向到的端口。有可能用nginx做这样的事情吗?或者有更好的替代方案,不涉及修改/etc/hosts或设置自己的dns服务器?

编辑:我的错,我实际上是输入错误的ipv6地址在cloudflare。它少了一个数字,所以它永远不会工作。我纠正了ip,它工作得很好。接受的答案更聪明地使用url,而不是硬编码ipv6,这是一个好主意!请注意,如果您使用的是ipv6服务器,那么您将在[::]:80端口

中侦听。

删除listen指令中的IPv6地址,并添加server_name指令:

http {
# redirect to my router page
server {
listen 80;
server_name router.mydomain.com;
return 302 http://192.168.0.1;
}
# redirect to filebrowser
server {
listen 80;
server_name filebrowser.mydomain.com;
return 302 http://192.168.0.2:1111;
}
}

我也不想设置本地dns服务器,因为它可能会减慢互联网域名的解析速度

这可能是一个错误的假设。像dnsmasq这样的东西能够解析本地名称并将所有其他DNS查询转发到上游服务器(如8.8.8.81.1.1.1),缓存结果。因此,当设置正确时,在这种情况下,您不需要域名或VPS。

相关内容

  • 没有找到相关文章

最新更新