Re: [問題] 請問如何抓取Server host name
: 抱歉,我事情說得不夠清楚
: 我想要抓一個這 Web server 所在網域的資訊作辨認,才能知道我這網站是架在哪
: 因為我這網站之後會同時架在不同網域上
: 如 http://localhost/ 就抓localhost
: http://www.xxx.com/ 就抓 www.xxx.com
: 因為 ip 可能會因搬遷伺服器而不一樣,但是 DNS 不太會變(註冊完就放著)
: 所以我想以DNS值為主,應該是Chikei前輩說的server服務的host name
我有點好奇你抓這個的目的是什麼...XD
到目前看起來,我其實會比較建議你寫個設定檔存網址
: 以GALINE前輩的方法在DNS的資訊寫在網卡內的機器是沒問題的
: 因為此時DNS下的host name就等於server服務的host name
: 雖然在本機跑時,他抓的不是localhost,debug程式時會有些麻煩就是了...
: 可是我之後架站的伺服器都是向外租的,他們都是虛擬伺服器,這招就沒用了
: 剛剛試了才發現不行
叫前輩感覺好怪 XD
其實「網卡」是不知道,也不會/無法去管 domain name 的。
InetAddress.getHostName() 後面還是得跟作業系統/DNS 要 Domain name
也就是說,會拿 IP 問作業系統/DNS「這個IP的 Domain Name 是什麼」
But,實際上你可以讓多個 Domain Name 對應到同一台機器
這也就是虛擬主機的作法
十個,甚至一百個網站,放在同一台機器上共享資源與 IP
而且有一百個,甚至更多的 domain name 指向到這台機器上
此時你無法依這台機器的 IP 取得你的 domain...
(這部份可以去找一下 DNS 正解反解的說明)
而對機器來說,要如何知道連上機器的使用者要看哪個網站呢?
答案是 http request header 中的 host 欄位,伺服器會依此去查設定檔
對 apache 來說,是 httpd.conf 中的 VirtualHost
對 tomcat 來說,是 web.xml 中的 host
當然,這個機制要 user 連上的時候才會走一次
好,現在問題來了。你的程式放在一台同時有幾百個網址指到的機器上
什麼能決定你的網站程式會對應到哪個 domain 呢?
答案是伺服器的 virtual host 設定,以及你去註冊了哪個網址
我不知道 servlet 有沒有辦法取得虛擬主機的 vhost 設定
不過,我想你的程式應該沒辦法自動知道你去註冊了哪個網址...
所以你要不要考慮寫在設定檔裡面[汗]
--
莉娜用魔法爆破進入屋內。
劫犯從另一個房間裡出現,大叫道︰「妳是誰!」
莉娜︰「我是個可疑的女人!」
劫犯無言以對。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.244.113.189
※ 編輯: GALINE 來自: 60.244.113.189 (07/27 17:10)
推
07/27 17:29, , 1F
07/27 17:29, 1F
推
07/27 18:42, , 2F
07/27 18:42, 2F
→
07/27 18:44, , 3F
07/27 18:44, 3F
→
07/27 18:46, , 4F
07/27 18:46, 4F
推
07/27 18:49, , 5F
07/27 18:49, 5F
→
07/27 18:51, , 6F
07/27 18:51, 6F
推
07/27 18:58, , 7F
07/27 18:58, 7F
→
07/27 19:00, , 8F
07/27 19:00, 8F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):