设为首页 收藏本站
查看: 819|回复: 0

[经验分享] Tomcat与Nginx、Apache结合的相关实践

[复制链接]

尚未签到

发表于 2017-12-23 15:40:56 | 显示全部楼层 |阅读模式
  一、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">  /*定义第二个应用程序:test-1app*/

  <Context path="/test-1" docBase="test-1app">  
</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端主机只需要在之前的基础上需改一个地方:
DSC0000.png

  在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.  
JkLogLevel notice
  
JkMount
/* srv_A       此处的"/"是以webapps为根  
JkMount /jk_status StatA
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-427207-1-1.html 上篇帖子: 安装成功的nginx如何添加未编译模块? 下篇帖子: ubuntn下 nginx+phpstorm 中配置xdebug调试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表