Re: [問題] 請問如何抓取Server host name

看板java作者 (天真可愛CQD)時間13年前 (2012/07/27 17:09), 編輯推噓4(404)
留言8則, 2人參與, 最新討論串2/3 (看更多)
: 抱歉,我事情說得不夠清楚 : 我想要抓一個這 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
終究...... XD
07/27 17:29, 1F

07/27 18:42, , 2F
所以還是版主的方式最好XDD 原本想說改設定檔很麻煩
07/27 18:42, 2F

07/27 18:44, , 3F
因為同時架在3個不同伺服器上,就要有3個不同的設定檔
07/27 18:44, 3F

07/27 18:46, , 4F
我只是想寫個萬用的,懶得改來改去而已(汗
07/27 18:46, 4F

07/27 18:49, , 5F
我要抓DNS是為了同步用,因為伺服器有擋3306 port
07/27 18:49, 5F

07/27 18:51, , 6F
所以透過servlet api來作資料庫同步
07/27 18:51, 6F

07/27 18:58, , 7F
我要先知道自身的DNS,才能去同步其他台伺服器
07/27 18:58, 7F

07/27 19:00, , 8F
不然會同步到自己,造成無窮迴圈
07/27 19:00, 8F
文章代碼(AID): #1G4bh38L (java)
文章代碼(AID): #1G4bh38L (java)