Version: Apache2
Version: Tomcat8
簡介
使用 Tomcat 的標(biāo)準(zhǔn)配置辕宏,Web 應(yīng)用可以請(qǐng)求服務(wù)器名稱和端口號(hào)》呜魄。當(dāng) Tomcat 單獨(dú)和 HTTP/1.1 連接器運(yùn)行時(shí)赏陵,通常會(huì)報(bào)告指定在請(qǐng)求中的服務(wù)器名稱送火,以及連接器正在偵聽的端口號(hào)联贩。servlet API:
ServletRequest.getServerName() 返回接收請(qǐng)求的服務(wù)器主機(jī)名烈钞。
ServletRequest.getServerPort() 返回接收請(qǐng)求的服務(wù)器端口號(hào)旺拉。
ServletRequest.getLocalName() 返回接收請(qǐng)求的 IP 接口的主機(jī)名。
ServletRequest.getLocalPort() 返回接收請(qǐng)求的 IP 接口的端口號(hào)棵磷。
當(dāng)你在代理服務(wù)器后(或者配置成具有代理服務(wù)器特征行為的 Web 服務(wù)器)運(yùn)行時(shí)蛾狗,可能有時(shí)會(huì)更愿意管理通過這些調(diào)用產(chǎn)生的值。特別是仪媒,你一般會(huì)希望端口號(hào)反應(yīng)指定在原始請(qǐng)求中的值沉桌,而非連接器所正在偵聽的那個(gè)值∷惴裕可以使用 <Connector>
元素中的 proxyName
和 proxyPort
屬性來配置這些值留凭。
-
打開配置文件
sudo vi /etc/apache2/httpd.conf
,做修改配置 Apache偎巢,使其包含 mod_proxy 模塊蔼夜。如果是從源碼開始構(gòu)建,最簡單的方式是在 ./configure 命令行中包括 --enable-module=proxy 指令压昼。
-
如果沒有添加 mod_proxy 模塊求冷,則檢查一下是否在 Apache 啟動(dòng)時(shí)加載了該模塊,在 httpd.conf 文件中使用下指令:
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so LoadModule proxy_module.libexec/apache2/mod_proxy.so #AddModule mod_proxy.c //apache2 不需要這一行
-
增加以下兩行:
ProxyPass /myapp http://localhost:8080/myapp ProxyPassReverse /myapp http://localhost:8080/myapp
保存文件
/etc/apache2/httpd.conf
-
打開配置文件
/Users/<your short user name>/Library/apache-tomcat-8.0.36/conf/server.xml
窍霞,作修改-
修改<Connector>內(nèi)容
<Connector port="8080" ... proxyName="www.mycompany.com" proxyPort="80"/>
這將導(dǎo)致該 Web 應(yīng)用內(nèi)的 servlet 認(rèn)為匠题,所有代理請(qǐng)求都指向的是 80 端口處的 www.mycompany.com。
可以忽略 <Connector> 元素的 proxyname 屬性但金,這是完全合法的韭山。如果忽略,那么 request.getServerName() 返回值將是運(yùn)行 Tomcat 的主機(jī)名——對(duì)于該例而言冷溃,它就是 localhost钱磅。
-