在局域网使用.local 的正确姿势是什么

2023-04-14 17:30:07 +08:00
 juggtt213

启动了 avahi 服务以后发现有点设备上使用起来有些问题,

首先是在安卓上使用 Chrome 无法访问devicename.local,我在 这个帖子的 2022 年的回复中看到好像安卓已经支持了.local ,但是在我的设备上似乎还是不行

然后用 Safari 访问.local 域名的时候,我发现访问//中的文件是正常的,但是我在设置了以下形式的反向代理以后

server{
  listen 80;
  server_name  devicename.local;
  index  index.php index.html index.htm;

  location /fb/ {
    proxy_pass  http://127.0.0.1:8080/;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

访问devicename.local/fb的时候在 Safari 上会直接 404 ,我看到苹果的帮助文件写到过.local 可能无法正常访问 链接

但是电脑上的 Chrome 和 Edge 是正常的,而且 Safari 还是能打开默认的/下的页面

总体用下来感觉很混乱,所以想问一下是不是我的使用姿势不太对?正确的使用方法应该是怎么样的

1119 次点击
所在节点    问与答
7 条回复
AoEiuV020CN
2023-04-14 18:02:36 +08:00
感觉不好使,我也试过一阵子就放弃了,
最后还是 dhcp 静态分配 ip 使用,
少数提供 web 服务的设备给个二级域名指过去,
device name 靠不住,
ksmagi
2023-04-14 18:05:02 +08:00
location /fb/
访问 devicename.local/fb 的时候

404 这不是你 nginx 配置问题吗……
juggtt213
2023-04-14 18:06:43 +08:00
@ksmagi 在别的浏览器上可以正常访问,我在 vps 上这么配也没问题
juggtt213
2023-04-14 20:46:02 +08:00
不知道是不是 safari 处理.local 的时候顺序和正常网址不同,我发现当请求到 nginx 的时候已经丢失了 host 那个部分,所以无法和 server_name 匹配。如果我把上面的 server_name 改成 _ ,来自 Safari 的请求就能正常匹配我的反代规则
billlee
2023-04-14 22:36:24 +08:00
主要是很多框架不走 libc 的名字服务,比如 golang, nodejs, wsl. 对这种要起一个支持转发到 libc 的 dns 缓存服务器,然后把系统 dns 配置指向它才好用。
julyclyde
2023-04-15 11:37:04 +08:00
@juggtt213 proxy set header 啊
themiscloud
2023-04-16 16:51:15 +08:00
完全可以不用 .local 域名,用自定义域名

个人真实在用案例小分享(比如用的域名是 nas.dev ):
1 、dnsmasq (operwrt 路由自带) 域名泛解析到 Nginx Proxy Manager(NPM) 机器上:

/etc/dnsmasq.d/nas.dev.conf
address=/nas.dev/192.168.1.xxx

2 、NPM 上配置服务转发

3 、mkcert 生成一个自制的 nas.dev 泛域名证书

4 、(可选)在 NPM 中根据需要配置 nas.dev 泛域名证书

5 、(可选)在电脑或手上信任 nas.dev 泛域名证书

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/932588

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX