一、LNMT
简介:在Tomcat服务器前端部署一个Nginx(反向代理),当用户请求静态资源时,由Nginx服务器负责响应;当用户请求java应用程序资源时,由后端的Tomcat服务器进行响应。
环境:
OS:Linux CentOS 6.8
Tomcat 6.0, IpAddr:192.168.1.101
Nginx 1.10.2, IpAddr:192.168.1.102
配置:
Tomcat端配置:
/*定义一个主机*/
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
/*定义一个Context:testapp应用程序*/
<Context path="/test" docBase="testapp" reloadable="true" />
/*定义第二个应用程序:test-1app*/
<Context path="/test-1" docBase="test-1app" reloadable="true" />
</Host>
Nginx端配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html; # Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; /*处理静态资源请求*/
location / {
} /*Tomcat处理URL以jsp和do结尾的请求*/
location ~*\.(jsp|do)$ {
proxy_pass http://192.168.1.101:8080;
} /*Tomcat处理testapp应用请求*/
location /test/ {
proxy_pass http://192.168.1.101:8080/test/index1.jsp;
} /*Tomcat处理test-1app应用请求*/
location /test-1/demo.jsp {
proxy_pass http://192.168.1.101:8080;
} error_page 404 /404.html;
location = /40x.html {
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
二、LAMT
简介:与LNMT类似,只不过是httpd作为反代服务器。但httpd反代tomcat有三种方式:
①基于httpd的proxy_module和proxy_http_module的反代
②基于httpd的proxy_module和proxy_ajp_module的反代
③基于httpd的mod_jk模块的反代(需自行编译安装)
环境:
OS:Linux CentOS 6.8
Tomcat 6.0, IpAddr:192.168.1.101
httpd 2.2.15, IpAddr:192.168.1.102
配置:
第一种方式的实现:
Tomcat端配置与Nginx时配置相同,无需修改。
Httpd端配置:
NameVirtualHost 192.168.1.102:80 <VirtualHost 192.168.1.102:80>
ServerName www.b.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / http://192.168.1.101:8080
ProxyPassReverse / http://192.168.1.101:8080
<Location />
Allow from all
</Location>
</VirtualHost> <VirtualHost 192.168.1.102:80>
ServerName www.c.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / http://192.168.1.101:8080/test/index1.jsp
ProxyPassReverse / http://192.168.1.101:8080/test/index1.jsp
<Location />
Allow from all
</Location>
</VirtualHost> <VirtualHost 192.168.1.102:80>
ServerName www.d.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / http://192.168.1.101:8080/test-1/demo.jsp
ProxyPassReverse / http://192.168.1.101:8080/test-1/demo.jsp
<Location />
Allow from all
</Location>
</VirtualHost>
如果是httpd2.4+版本,配置如下:
<VirtualHost 192.168.1.102:80>
ServerName www.b.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://192.168.1.101:8080
ProxyPassReverse / http://192.168.1.101:8080
<Location />
Require all granted
</Location>
</VirtualHost>
第二种方式实现:
Tomcat端无需变动
Httpd端仅需修改协议和端口即可,配置如下:
NameVirtualHost 192.168.1.102:80 <VirtualHost 192.168.1.102:80>
ServerName www.b.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / ajp://192.168.1.101:8009
ProxyPassReverse / ajp://192.168.1.101:8009
<Location />
Allow from all
</Location>
</VirtualHost> <VirtualHost 192.168.1.102:80>
ServerName www.c.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / ajp://192.168.1.101:8009/test/index1.jsp
ProxyPassReverse / ajp://192.168.1.101:8009/test/index1.jsp
<Location />
Allow from all
</Location>
</VirtualHost>
第三种方式实现:
请求流程:Client-->http-->httpd-->mod_jk(ajp)-->tomcat(http connector)
首先安装mod_jk模块:tomcat-connectors-1.2.42-src.tar.gz(依赖httpd-devel)
展开归档后进入native目录,执行
# ./configure --with-apxs=/usr/sbin/apxs
# make && make install
安装完成,开始配置,
Tomcat端主机只需要在之前的基础上需改一个地方:
在Engine中加入jvmRoute属性即可。
Httpd端的配置,需要两个配置文件:
①/etc/httpd/conf.d/workers.propeties
worker.list=srv_A,StatA
worker.srv_A.host=192.168.1.101
worker.srv_A.port=8009
worker.Tomcat.type=ajp13
worker.StatA.type=status
②/etc/httpd/conf.d/mod_jk.conf
/*装载jk_module 路径是相对于/etc/httpd/下*/
LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/conf.d/workers.properies
JkLogFile logs/mod_jk.log
JkLogLevel notice
JkMount /* srv_A 此处的"/"是以webapps为根
JkMount /jk_status StatA