我有一个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.8
或1.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.8
或1.1.1.1
),缓存结果。因此,当设置正确时,在这种情况下,您不需要域名或VPS。