實例一:手動添加一個應用程序:
創建一個webapp的目錄
[root@localhost myweb]# mkdir webapp
[root@localhost webapp]# mkdir logs
[root@localhost myweb]# cd webapp/
[root@localhost webapp]# mkdir./{classes,lib,META-INF,WEB-INF,Root}
在Root目錄下創建自定義的index.jsp文件
[root@localhost webapp]# cat Root/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*"%>
<html>
<head>
<title>jsptest page</title>
</head>
<body>
<%out.println("hello world"); %>
</body>
</html>
然後配置tomcat的配置文件
[root@localhost conf]# vim server.xml
添加一個Host組件
<Host name="tomcat.lpw.com"appBase="/myweb/webapp/" unpackWARS="TRUE"autoDeploy="no">
<Contextpath="webapp" docBase="Root" reloadable="true"/>
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="/myweb/logs"
prefix="myweb_access_log." suffix=".txt"
pattern="%h %l %u %t"%r" %s %b" />
</Host>
並修改默認的engine組件爲自定義的Host
然後重新啓動tomcat
[root@localhost bin]# catalina.sh start
在瀏覽其中查看:
還可以自定義Value組件實現訪問控制。如:
<ValveclassName="org.apache.catalina.valves.RemoteAddrValve" deny="172\.16\.100\.100"/>
注意:
appBase:指定tomcat讀取程序時的根目錄
docBase:指定一個應用程序的根目錄,可以指定爲Root,直接將程序文件放在此目錄下
path :指定訪問時的url地址。和docBase是相對了路徑,類似於httpd中的Location定義的路徑。path給定的路徑不能以“/”結尾;
實例二:使用nginx做反向代理後端tomcat服務器:
以上面的實例一作爲tomcat服務,在另一主機上配置nginx做方向代理。
修改nginx的主配置文件
添加
server {
listen 80;
location~* \.(jsp|do)$ {
proxy_pass http://tomcat1.com:8080;
}
}
可以在瀏覽器中測試:
實例三:以httpd做反向代理實現後端tomcat
可以使用yum安裝httpd,此處使用centos7安裝的httpd-2.4
第一步:首先確認httpd是否支持代理模塊:
proxy_module //httpd使用此模塊實現代理功能的最重要的模塊
proxy_http_module //httpd實現基於http協議代理功能的子模塊
proxy_balancer_module //httpd實現負載均衡的模塊
proxy_ajp_module //httpd實現基於ajp協議與後端tomcat鏈接的模塊
以上模塊必須啓用纔可以使用httpd做反向代理或負載均衡與後端tomcat向鏈接
注意:另外httpd還可以基於jk模塊實現反向代理(使用jk模塊實現返向代理時只能基於ajp協議與後端tomcat聯繫),此模塊默認安裝的httpd沒有安裝,需要自行從apache官網下載並編譯使用。
第二步:修改httpd配置文件:
修改httpd的配置文件,禁用中心主機
#DocumentRoot "/var/www/html"
定義一個虛擬主機
[root@lpw3 conf.d]# vim Vhost.conf
<VirtualHost *:80>
ServerName tomcat1.com
ProxyVia On //是否啓用在向客戶端響應時的響應報文中添加首部指明是由己代理的。
ProxyRequests Off //關閉正向代理功能,module_proxy默認情況下既能做正向代理,也能做反向代理,但只能同時使用一種代理方式,Off表示關閉正向代理功能,啓用反向代理功能。
ProxyPreserveHost On //設置是否將客戶端請求報文中的Host首部發送給後端服務器。
<proxy *>
Require all granted //設置所有請求都向後代理
</proxy>
ProxyPass / http://172.16.249.204:8080/ #設置後端代理服務的地址和端口以及那些資源進行代理。
ProxyPa***everse / http://172.16.249.204:8080/
<Location />
Require all granted
</Location>
</VirtualHost>
啓動httpd服務
[root@lpw3 conf.d]# systemctl start httpd.service
在瀏覽器中測試:
注意:使用httpd做動靜分離是很困難的,但是可以使用nginx來實現,一般在生產環境中使用LNAMT:即linux、nginx、apache、mysql、tomcat
httpd使用ajp協議向後端tomcat做反向代理:(只需要修改使用的反向代理協議爲ajp即可,httpd服務會自動調用module_ajp模塊實現反代功能)
<VirtualHost *:80>
ServerName tomcat1.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<proxy *>
Require all granted
</proxy>
ProxyPass / ajp://172.16.249.204:8009/
ProxyPa***everse / ajp://172.16.249.204:8009/
<Location />
Require all granted
</Location>
</VirtualHost>
注意:對於httpd服務的status頁面應該查看代理服務的status頁面,只需要再虛擬主機的中添加以下一項,並添加status頁面的Location即可實現。
ProxyPass /staus !
後續實例見博客四:httpd分別基於三種方式實現負載均衡tomcat及nginx實現負載均衡tomcat