Ars*_*lum 5 networking dns lan subdomain hostname
对于本地服务器 ( nginx
)上的 Web 开发,我喜欢为某些项目创建子域虚拟主机,主要是为了方便和灵活。例如
server {
listen 80;
server_name project.myHostname;
root /that/projects/html/root;
....
}
Run Code Online (Sandbox Code Playgroud)
虽然技术上有问题(?),但http://project.myHostname
在同一台机器上发出请求时它工作正常。但我想最终得到一个配置,我可以http://project.myHostname
从本地网络中连接的任何设备(并且仅在那里)访问。就像它在我访问时工作一样myHostname
(因为,我猜我的路由器 DNS 将其解析为本地 ip)。但对于另一件事,我得到了各种各样的错误尖叫,没有这样的事情subdomain.hostname
。
到目前为止,我找到的唯一解决方案是hosts
为每个应该能够请求该“地址”的设备手动编辑文件。有没有更方便的解决方案?
我认为这里的一个主要问题可能是我对主机名、域名等之间的概念和关系掌握得不好。我已经为此苦苦挣扎了一段时间,但很难理解它。
您需要 DNS 功能,因此您应该使用 DNS。
这就是“准备”部分。
现在创建一个名为“myHostname”的新区域。它与托管您自己的域(如 )大致相同example.com
,因此您可以遵循各种现有教程。
(区域对应于一个权威区域——通常是一个 TLD 或“常规”一级域,但在某些情况下,子域也可以是它自己的区域。)
很多人为此使用dnsmasq,但我不知道它是否支持通配符。另外它的配置真的很模糊,所以我会跳过它。
在Unbound(主要是具有非常有限的权威托管功能的递归器)中,它看起来像这样:
server:
(other settings...)
local-zone: "myHostname." static
local-data: "myHostname. A 192.168.1.234"
local-data: "*.myHostname. A 192.168.1.234"
(other settings...)
forward-zone:
name: "."
forward-addr: 8.8.8.8
forward-addr: 8.8.4.4
Run Code Online (Sandbox Code Playgroud)
这既指向myHostname
又<anything>.myHostname
指向给定的 IP 地址。
在 Bind9(它是一个功能齐全的权威服务器)中,它稍微复杂一些——您需要创建一个单独的“区域文件”:
; /etc/named.conf
options {
(other settings...)
forwarders { 8.8.8.8; 8.8.4.4; };
};
zone "myHostname" {
type master;
file "/var/named/myHostname.zone";
};
; /var/named/myHostname.zone (example in short form, with $ORIGIN)
$ORIGIN myHostname.
$TTL 1h
@ SOA localhost. whatever. ( 1 4h 1h 7d 1h )
@ A 192.168.1.234
* A 192.168.1.234
; /var/named/myHostname.zone (same example but in full form)
$TTL 1h
myHostname. SOA localhost. whatever. ( 1 4h 1h 7d 1h )
myHostname. A 192.168.1.234
*.myHostname. A 192.168.1.234
Run Code Online (Sandbox Code Playgroud)
($ORIGIN
如果它们还没有以点结尾,则会自动附加到所有名称。)
归档时间: |
|
查看次数: |
2203 次 |
最近记录: |