Ruwan Ranganath Asked: 2018-05-30 06:53:54 +0800 CST2018-05-30 06:53:54 +0800 CST 2018-05-30 06:53:54 +0800 CST 将单词“foo”映射到域名“foobar.com” 772 我需要将一个词映射"foo"到一个域名,"foobar.com" 所以它应该能够运行ping foo或卷曲它。 别名 foo='foobar.com' 给出以下问题。 curl -k foo curl: (6) Could not resolve host: foo 这是在 kubernetes 上运行的,域名 IP 地址是动态的。 基本上我想将 K8s 服务名称映射到 IP 动态的内部域名。 linux domain 3 个回答 Voted Best Answer Kramer 2018-05-30T07:19:23+08:002018-05-30T07:19:23+08:00 您要做的是在此处设置服务器别名。 选项A(脏丑) 您需要为此编辑/etc/hosts文件 例如 ${IP} foo foo.com 那么你将能够 curl foo -H 'Host: foo.com' 主机标头是必需的,因为 vhost 别名是 foo.com 选项B(干净漂亮) 创建服务器别名,根据您的 Web 服务器,它可能有不同的配置。 在我的 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 上你也需要一个主机头。 Andy Dalton 2018-05-30T07:24:46+08:002018-05-30T07:24:46+08:00 对于您的简单用例,您可以使用变量: $ foo="foobar.com" $ curl -k "${foo}" 您的所有用例都以终端命令为中心吗? thrig 2018-05-30T07:24:17+08:002018-05-30T07:24:17+08:00 您将需要(可能的脚枪)是“全局”别名来进行中线替换。这些由 ZSH 提供。 $ exec zsh % alias -g foo=foobar.com % print foo foobar.com % 但是请注意,任何简单的使用foo都会被替换,所以 iffoo也可能是一个不能被替换的参数,那么可能会发生不好的事情(因此,footgun - 命令可能会中断,或者错误的 args 可能导致其他事情发生,或者...... ) % print 'foo' foo 所以这是额外的工作,你需要用你的大脑来记住什么时候foo需要被引用,什么时候不需要,这取决于它有多常见foo。
您要做的是在此处设置服务器别名。
选项A(脏丑)
您需要为此编辑
/etc/hosts
文件例如
那么你将能够
curl foo -H 'Host: foo.com'
主机标头是必需的,因为 vhost 别名是 foo.com
选项B(干净漂亮)
创建服务器别名,根据您的 Web 服务器,它可能有不同的配置。
在我的 apache httpd 配置中,我使用:
/etc/httpd/sites-available
- 包含每个虚拟主机的配置/etc/httpd/sites-enabled
- 包含指向可用站点配置文件的符号链接,这样我就可以激活/停用虚拟主机而无需修改或重命名可用站点上的文件,我只需要取消链接即可关闭虚拟主机我已经修改了 conf
/etc/httpd/conf/httpd.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
以匹配此:接着
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 上你也需要一个主机头。对于您的简单用例,您可以使用变量:
您的所有用例都以终端命令为中心吗?
您将需要(可能的脚枪)是“全局”别名来进行中线替换。这些由 ZSH 提供。
但是请注意,任何简单的使用
foo
都会被替换,所以 iffoo
也可能是一个不能被替换的参数,那么可能会发生不好的事情(因此,footgun - 命令可能会中断,或者错误的 args 可能导致其他事情发生,或者...... )所以这是额外的工作,你需要用你的大脑来记住什么时候
foo
需要被引用,什么时候不需要,这取决于它有多常见foo
。