簡體   English   中英

如何從Java / Apache中的應用程序服務器確定Web服務器的主機名

[英]How do I determine the hostname of a web server from an app server in Java/Apache

我正在Apache上運行Java應用程序。 我正在嘗試找到一種方法來允許我的應用服務器代碼知道Web服務器的主機名。 有沒有辦法做到這一點?

跑步

InetAddress addr = InetAddress.getLocalHost();
String hostname = addr.getHostName();

要么

(HttpServletResponse)response.getHeader("Host");

兩者都能產生應用服務器的主機名。

這在很大程度上取決於您的Web服務器的配置,但是我發現在JBoss前面使用Apache的情況下, getRemoteHost返回了Web服務器的地址。

可能值得一去

我已經通過幾種方式處理了這個問題:

  1. 通過系統屬性明確告知應用應使用的主機名
  2. 在Apache中有一個重寫規則,該規則將標頭添加到請求中,例如X-originally-For
  3. 從請求中讀取X-Forwarded-For標頭

注意:我不太喜歡#3。 由於XFF標頭是通過主機傳遞給主機的,因此您不能信任主機無法控制的主機添加的地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM