V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
juggtt213
V2EX  ›  问与答

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

  •  
  •   juggtt213 · Apr 14, 2023 · 2681 views
    This topic created in 1111 days ago, the information mentioned may be changed or developed.

    启动了 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 还是能打开默认的/下的页面

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

    7 replies    2023-04-16 16:51:15 +08:00
    AoEiuV020CN
        1
    AoEiuV020CN  
       Apr 14, 2023
    感觉不好使,我也试过一阵子就放弃了,
    最后还是 dhcp 静态分配 ip 使用,
    少数提供 web 服务的设备给个二级域名指过去,
    device name 靠不住,
    ksmagi
        2
    ksmagi  
       Apr 14, 2023
    location /fb/
    访问 devicename.local/fb 的时候

    404 这不是你 nginx 配置问题吗……
    juggtt213
        3
    juggtt213  
    OP
       Apr 14, 2023 via iPhone
    @ksmagi 在别的浏览器上可以正常访问,我在 vps 上这么配也没问题
    juggtt213
        4
    juggtt213  
    OP
       Apr 14, 2023
    不知道是不是 safari 处理.local 的时候顺序和正常网址不同,我发现当请求到 nginx 的时候已经丢失了 host 那个部分,所以无法和 server_name 匹配。如果我把上面的 server_name 改成 _ ,来自 Safari 的请求就能正常匹配我的反代规则
    billlee
        5
    billlee  
       Apr 14, 2023
    主要是很多框架不走 libc 的名字服务,比如 golang, nodejs, wsl. 对这种要起一个支持转发到 libc 的 dns 缓存服务器,然后把系统 dns 配置指向它才好用。
    julyclyde
        6
    julyclyde  
       Apr 15, 2023
    @juggtt213 proxy set header 啊
    themiscloud
        7
    themiscloud  
       Apr 16, 2023
    完全可以不用 .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 泛域名证书
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3309 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 04:41 · PVG 12:41 · LAX 21:41 · JFK 00:41
    ♥ Do have faith in what you're doing.