tomcat结合httpd和nginx

httpd结合tomcat:

前提:httpd版本2.4以上,编译安装

httpd:192.168.223.136 tomcat:192.168.223.146

tomcat简单创建一个额外的webapps:

  [[email protected] tomcat]# mkdir /data/webapps/{ROOT,WEB-INF,META-INF,classes,lib} -pv

  mkdir: 已创建目录 "/data"

  mkdir: 已创建目录 "/data/webapps"

  mkdir: 已创建目录 "/data/webapps/ROOT"

  mkdir: 已创建目录 "/data/webapps/WEB-INF"

  mkdir: 已创建目录 "/data/webapps/META-INF"

  mkdir: 已创建目录 "/data/webapps/classes"

  mkdir: 已创建目录 "/data/webapps/lib"

  vim /data/webapps/ROOT/index.jsp

  <Engine name="Catalina" defaultHost="192.168.223.146"> 替换默认的host主机

    <Host name="192.168.223.146" appBase="/data/webapps" unpackWARs="true" autoDeploy="true">

      <Context path="" docBase="ROOT" reloadable="true"/>

      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"

          prefix="192.168.223.146_access_log" suffix=".txt"

          pattern="%h %l %u %t &quot;%r&quot; %s %b" />

    </Host>

  [[email protected] data]# tree webapps/

  webapps/

  ├── classes

  ├── lib

  ├── META-INF

  ├── myapp

  │   └── login.jsp

  ├── ROOT

  │   └── index.jsp

  └── WEB-INF

httpd实现tomcat反代的几种方式:

1、基于http协议

  需要使用的模块:主模块:proxy_module、子模块:proxy_module_http

  1、在主配置文件httpd.conf开启下面两个模块:

  LoadModule proxy_module modules/mod_proxy.so

  LoadModule proxy_http_module modules/mod_proxy_http.so

  2、开启后打开虚拟主机的支持文件:

  # Virtual hosts

  Include /etc/httpd2.4/extra/httpd-vhosts.conf

  3、然后编辑vhosts文件:

  <VirtualHost *:80>

    ServerName 192.168.223.136              这里只是httpd服务器的ip

    proxyVia On                     如果设置为On每个请求和应答都会对应当前主机得到一个"Via:"头。(此选项可以不用设置)

    ProxyRequests Off           关闭正向代理

    ProxyPreserveHost On       当启用时,此选项将把传入请求的"Host:"行传递给被代理的主机,而不是传递在ProxyPass中指定的主机名,默认为off(此选项可以不用设置)

    <Proxy *>        设置代理权限,所有的都给代理至后端服务器

      Require all granted

    </Proxy>

    ProxyPass / http://192.168.223.146:8080/           

    ProxyPassReverse / http://192.168.223.146:8080/

    <Location />

      Require all granted

    </Location>

  </VirtualHost>

2、httpd与tomcat结合使用ajp协议:

  1、开启必须要支持的proxy模块

  LoadModule proxy_module modules/mod_proxy.so

  LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

  2、开启后打开虚拟主机的支持文件:

  # Virtual hosts

  Include /etc/httpd2.4/extra/httpd-vhosts.conf

  3、然后编辑vhosts文件:

  <VirtualHost *:80>

    ServerName 192.168.223.136

    proxyVia On

    ProxyRequests Off

    ProxyPreserveHost On

    <Proxy *>

      Require all granted

    </Proxy>

    ProxyPass / ajp://192.168.223.146:8009/            ajp协议开启的是8009端口

    ProxyPassReverse / ajp://192.168.223.146:8009/

    <Location />

      Require all granted

    </Location>

  </VirtualHost>

观察tomcat日志看见真实的ip:

[[email protected] logs]# tail -f 192.168.223.146_access_log.2017-08-09.txt
192.168.223.1 - - [09/Aug/2017:11:31:49 +0800] "GET /myapp/login.jsp HTTP/1.1" 200 127
192.168.223.1 - - [09/Aug/2017:11:31:49 +0800] "GET /myapp/login.jsp HTTP/1.1" 200 127
192.168.223.1 - - [09/Aug/2017:11:31:49 +0800] "GET /myapp/login.jsp HTTP/1.1" 200 127
192.168.223.1 - - [09/Aug/2017:11:32:24 +0800] "GET / HTTP/1.1" 200 122
192.168.223.1 - - [09/Aug/2017:11:47:51 +0800] "GET / HTTP/1.1" 200 122
192.168.223.1 - - [09/Aug/2017:11:47:52 +0800] "GET / HTTP/1.1" 200 122
192.168.223.1 - - [09/Aug/2017:11:47:54 +0800] "GET /myapp/login.jsp HTTP/1.1" 200 127
192.168.223.1 - - [09/Aug/2017:11:48:13 +0800] "GET /myapp/login.jsp HTTP/1.1" 200 127
192.168.223.1 - - [09/Aug/2017:11:48:13 +0800] "GET /myapp/login.jsp HTTP/1.1" 200 127
192.168.223.1 - - [09/Aug/2017:11:48:14 +0800] "GET /myapp/login.jsp HTTP/1.1" 200 127

nginx与tomcat进行结合:

nginx:192.168.223.136,tomcat:192.168.223.146

server {
  listen 80;
  server_name 192.168.223.136;

  location / {

    root html;
    index index.html index.htm;
    proxy_pass http://192.168.223.146:8080;
  }

nginx日志如下:

192.168.223.1 - - [09/Aug/2017:13:43:26 +0800] "GET /myapp/login.jsp HTTP/1.1" 200 112 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
192.168.223.1 - - [09/Aug/2017:13:43:30 +0800] "GET / HTTP/1.1" 200 107 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
192.168.223.1 - - [09/Aug/2017:13:46:11 +0800] "GET /myapp/login.jsp HTTP/1.1" 200 112 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"

tomcat日志如下:

192.168.223.136 - - [09/Aug/2017:13:43:26 +0800] "GET /myapp/login.jsp HTTP/1.0" 200 127
192.168.223.136 - - [09/Aug/2017:13:43:30 +0800] "GET / HTTP/1.0" 200 122
192.168.223.136 - - [09/Aug/2017:13:46:11 +0800] "GET /myapp/login.jsp HTTP/1.0" 200 127

如何才能使tomcat抓捕到真实的客户端ip呢?

1、在nginx上设置:

  proxy_set_header X-Forwarded-For $remote_addr;

2、然后在tomcat日志定义处添加首部信息:

  pattern="%h %{X-Forwarded-For}i %l %u %t &quot;%r&quot; %s %b" />

然后tomcat访问日志:

192.168.223.136 192.168.223.1 - - [09/Aug/2017:13:55:03 +0800] "GET /myapp/login.jsp HTTP/1.0" 200 127
192.168.223.136 192.168.223.1 - - [09/Aug/2017:13:55:04 +0800] "GET /myapp/login.jsp HTTP/1.0" 200 127

nginx结合tomcat实现动静分离:

location ~* \.(jsp|do)$ {
  proxy_pass http://192.168.223.146:8080;
}

访问网址:

默认首页是index.html所以访问的是nginx自己的html下的index.html

当后缀为jsp时,就请求访问tomcat了,在tomcat日志那里也可以查看:

192.168.223.136 - - - [09/Aug/2017:14:09:03 +0800] "GET /index.jsp HTTP/1.0" 200 122

利用nginx作为代理服务器,转向192.168.223.146的httpd服务器,然后通过httpd转向本地的tomcat

nginx:192.168.223.136   httpd:192.168.223.146,版本2.4以上  tomcat:192.168.223.146

配置httpd:同以上

1、基于http协议

  需要使用的模块:主模块:proxy_module、子模块:proxy_module_http

  1、在主配置文件httpd.conf开启下面两个模块:

  LoadModule proxy_module modules/mod_proxy.so

  LoadModule proxy_http_module modules/mod_proxy_http.so

  2、开启后打开虚拟主机的支持文件:

  # Virtual hosts

  Include /etc/httpd2.4/extra/httpd-vhosts.conf

  3、然后编辑vhosts文件:

  <VirtualHost *:80>

    ServerName 192.168.223.146            httpd和tomcat位于同一主机

    proxyVia On

    ProxyRequests Off

    ProxyPreserveHost On

    <Proxy *>

      Require all granted

    </Proxy>

    ProxyPass / http://192.168.223.146:8080/           

    ProxyPassReverse / http://192.168.223.146:8080/

    <Location />

      Require all granted

    </Location>

  </VirtualHost>

http日志:

192.168.223.136 - - [09/Aug/2017:14:37:09 +0800] "GET /index.jsp HTTP/1.0" 200 122

tomcat日志:

192.168.223.146 192.168.223.136 - - [09/Aug/2017:14:37:09 +0800] "GET /index.jsp HTTP/1.1" 200 122

nginx只是做反代,没有处理请求的义务,由于后端httpd是直接反带的所以httpd默认的html下面的index.html不是tomcatwebapps下面的index.html

在tomcat的应用目录/data/webapps/ROOT下面创建一个index.html

cp index.html /data/webapps/ROOT/,然后再次访问:

查看httpd日志:

192.168.223.136 - - [09/Aug/2017:14:41:41 +0800] "GET /index.html HTTP/1.0" 200 45

查看你tomcat日志:

192.168.223.146 192.168.223.136 - - [09/Aug/2017:14:41:41 +0800] "GET /index.html HTTP/1.1" 200 45

时间: 2024-08-14 06:18:14

tomcat结合httpd和nginx的相关文章

tomcat配置及基于nginx、apache反向代理tomcat

如今,基于Web的应用越来越多,传统的Html已经满足不了如今的需求.我们需要一个交互式的Web,于是便诞生了各种Web语言.如Asp,Jsp,Php等.当然,这些语言与传统的语言有着密切的联系,如Php基于C和C 语言,Jsp基于Java语言.Tomcat即是一个Jsp和Servlet的运行平台. Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成.由于有了Sun的参与和支持,最新

Tomcat结合Apache、Nginx实现高性能的web服务器

一.Tomcat为什么需要与apache.nginx一起结合使用? Tomcat虽然是一个servlet和jsp容器,但是它也是一个轻量级的web服务器.它既可以处理动态内容,也可以处理静态内容.不过,tomcat的最大优势在于处理动态请求,处理静态内容的能力不如apache和nginx,并且经过测试发现,tomcat在高并发的场景下,其接受的最大并发连接数是由限制的,连接数过多会导致tomcat处于"僵死"状态,因此,在这种情况下,我们可以利用nginx的高并发,低消耗的特点与tom

httpd或Nginx负载均衡tomcat

实验环境:CentOS7 #两台tomcat的基本配置如下: [[email protected] localhost]#setenforce 0 [[email protected] localhost]#iptables -F [[email protected] localhost]#yum -y install java-1.8.0-openjdk-devel tomcat tomcat-webapps tomcat-admin-webapps [[email protected] lo

启动脚本---》httpd,nginx

#vim httpd.sh #!/bin/bash#chkconfig: - 45 55httpd=/usr/sbin/httpdpid=/var/run/httpd/httpd.pidstart(){     if [ -f $pid ];then        echo 已经启动        exit     fi      echo "starting......"     $httpd     if [ $? -ne 0 ];then        echo "启动

Nginx+Tomcat动静分离及Nginx优化

目的:nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能. 准备软件: 下载jdk1.7:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 下载tomcat8.0:http://tomcat.apache.org/download-80.cgi 下载nginx1.

tomcat篇之与nginx结合做静态分离和负载均衡

tomcat1:192.168.1.11 tomcat2:192.168.1.155 nginx:192.168.1.155 静态分离:192.168.1.155 nginx: location / { root   /www/webapps/; index  index.html index.htm index.jsp; } location ~* \.(jsp|do)$ { proxy_set_header X-Forwarded-Host $host; proxy_set_header X

linux下使用yum安装mysql、tomcat、httpd

一.linux下使用yum安装mysql 1.安装 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 查看有没有安装包: yum list mysql* 安装mysql客户端: yum install mysql 安装mysql 服务器端: yum install mysql-server yum install mysql-devel www.2cto.com 2.启动&&停止 数据库字符集设置 mysql配置文件/etc

nginx+tomcat简单反向代理+nginx监控

首先nginx要知道正向代理,反向代理正向代理:访问GG,此时肯定需要一个FQ,然后找到一个可以访问国外的一个代理,然后代理去访问GG,将数据传递给我们.这个时候代理做的位置就是正向代理,反向代理:比如访问某宝,代理的是服务端,nginx接收之后按一地你给规则分发给后端的业务处理服务器进行处理, 环境tomcat8080 tomcat8081nginx 做反向代理nginx配置 这个配置是在http标签里边 upstream myserver { server 192.168.4.4:8080

httpd和nginx

httpd模式: 1.perfork:一个进程处理一个请求,最高支持1024 2.worker:一个线程处理一个请求,多进程,一个进程生成多个线程 3.event:基于事件驱动