不知道有没有朋友跟我一样,局域网配置了很多服务,比如nextcloud、photoprism、transmission、portainer、plex等等,每次使用网络服务时,都得回想半天这个服务在哪个IP、端口,就很苦恼有些网络服务没有APP端,用IP:port或是英文域名的形式分享给家人也很麻烦。今天我们就试试利用nginx搞个中文域名转发,解决这一痛点~
1. nginx 安装配置
nginx 毕竟是业内最流行的HTTP、反向代理服务器,解决家庭局域网内部转发还是绰绰有余的。由于我们用不到负载均衡、TCP转发等其他功能,家庭局域网使用nginx的最好方式是nginx-proxy-manager,简单的WEB-UI配置就可以实现反向代理、端口转发等功能。HA的add-on中就有nginx-proxy-manager,安装配置可以参考土豆大佬的文章:https://bbs.hassbian.com/thread-6893-1-1.html
由于个人比较喜欢把网络相关功能都集成在OP系统上,这样也方便管理,所以并没有使用HA add-on安装,而是使用portainer/docker在OP系统上部署nginx-proxy-manager。部署过程中踩了俩坑:一个是建议使用docker.io的官方image repo,我试了国内几个repo每个都有不同的神奇问题;另一个是建议nginx-proxy-manager 容器直接使用host网络模式,不要用bridge模式再暴露端口(我之前用的bridge,配置后转发不成功,直接报502)。
2. 修改网关hosts文件
现在,我们需要把域名指向nginx所在主机。局域网内设备DNS解析会首先询问网关(除非你手动添加了其他DNS解析服务器),所以我们修改网关/etc/hosts文件即可。当然,用OP系统或其他软路由系统的朋友直接可以通过WEB-UI配置。这里我们配置一个中文域名试试。首先我们需要把中文域名转化为punnycode,这个网站工具就可以实现:http://www.webmasterhome.cn/tool/punycode.asp
比如说我们给homeassistant起个中文局域网域名,直接翻译成“家庭助手”没有灵魂,不如就翻译成“女仆”吧 利用上边提到的网站工具,punnycode是xn--smq03x,那我们在OP web-ui配置下,或者是改下网关/etc/hosts并重启服务:
(把xn--smq03x指向nginx所在主机)
3. nginx-proxy-manager配置
nginx-proxy-manager web-ui的默认端口是81,我们在浏览器打开所在主机的81号端口。进入后点击hosts->proxy hosts,进入界面点击add proxy hosts。在弹出的窗口中,把我们上边的punnycode配置成domain name,并填写好Homeassistant所在的IP、端口,勾选Cache Assets、Websocket Support后点击Save。这样我们就把中文域名指向到了我们想要的服务了。
4. 服务配置
很多网络服务如nextcloud、HA对端口转发、域名等都有限制。对于homeassistant,我们需要修改configuration.yaml配置文件,添加如下内容并重启HA。
http:
use_x_forwarded_for: true
trusted_proxies: 192.168.3.1 #替换成nginx所在主机IP地址
等HA重启完毕,你现在就可以在浏览器输出“女仆/”来进入HA了。
当然啦,通过以上方法,你可以给局域网内大多数服务起个中文昵称。还等什么?后宫搞起来
|