將單字“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其常見程度。

相關內容