将单词“foo”映射到域名“foobar.com”

将单词“foo”映射到域名“foobar.com”

我需要将一个单词映射"foo"到一个域名"foobar.com" ,因此它应该能够运行ping foo或卷曲它。

别名 foo='foobar.com'

给出以下问题。

curl -k foo
curl: (6) Could not resolve host: foo

这是在 kubernetes 上运行的,域名 IP 地址是动态的。

基本上我想将K8s服务名称映射到IP动态的内部域名。

答案1

您想要做的是这里的服务器别名。

选项A(又脏又丑)

您需要/etc/hosts为此编辑文件

例如

${IP} foo foo.com

那么你将能够

curl foo -H 'Host: foo.com'

主机标头是必需的,因为虚拟主机别名是 foo.com

选项B(干净漂亮)

创建服务器别名,根据您的网络服务器,它可能有不同的配置。

在我的 apache httpd 配置中我使用:

/etc/httpd/sites-available- 包含每个虚拟主机的配置

/etc/httpd/sites-enabled- 包含指向可用站点配置文件的符号链接,这样我可以激活/停用虚拟主机,而无需修改或重命名可用站点上的文件,我只需要取消链接即可关闭虚拟主机

我已经修改了conf

/etc/httpd/conf/httpd.conf

[...]
IncludeOptional sites-enabled/*.conf`
[...]

所以假设我有

/etc/httpd/sites-available/foo.com.conf和一个符号链接版本/etc/httpd/sites-enabled/foo.com.conf

然后做

cp /etc/httpd/sites-available/foo.com.conf /etc/httpd/sites-available/foo.conf

修改foo.conf以匹配此:

[...]    
ServerName foo
ServerAlias foo
[...]

进而 ln -s /etc/httpd/sites-available/foo.conf /etc/httpd/sites-enabled/foo.conf

最后重新启动apache:

systemctl restart httpd

笔记所有这些操作可能需要 root 或 sudo(高级用户)

假设您的系统有一个 DNS 服务器,则不需要其他任何东西;否则 /etc/hosts 文件也需要修改,但是当你卷曲时,你不需要传递主机头,因为 vhost 别名将是 foo。

即在这种情况下curl http://foo可以正常工作,而在选项 A 上,您也需要一个主机标头。

答案2

对于简单的用例,您可以使用变量:

$ foo="foobar.com"
$ curl -k "${foo}"

您的所有用例都以终端命令为中心吗?

答案3

您需要(可能的 footgun)“全局”别名来进行中线替换。这些都是由ZSH提供的。

$ exec zsh
% alias -g foo=foobar.com
% print foo
foobar.com
% 

但请注意任何仅仅使用foowill 会被替换,所以 iffoo也可以是一个参数一定不被替换,那么糟糕的事情可能会发生(因此,footgun - 命令可能会中断,或者错误的参数可能会导致其他事情发生,或者......)

% print 'foo'
foo

因此,您需要用大脑做额外的工作,以始终记住何时foo需要引用,何时不需要引用,具体取决于foo其常见程度。

相关内容