Nginx + Tomcat 有关SSI 的那些事儿

Nginx + Tomcat 有关SSI 的那些事儿

原创 2016-04-13 景峯 Netkiller

 

在工作中使用到SSI,对于静态页面由Nginx处理SSI是没有问题。对于jsp 文件里面的SSI怎么办呢?我们不想开启Tomcat的 SSI功能,我们希望SSI 的解析交给Nginx来完成,Tomcat 只处理应用。

 

下面的文章用实例说明这是可行的。

文章节选择 《Netkiller Web 手札》 Tomcat 篇

 

 

3.2.6.5. Proxy 与 SSI

背景:nginx + tomcat 模式,nginx 开启 SSI , Tomcat 动态页面中输出 SSI 标签

		# cat  /etc/nginx/conf.d/www.netkiller.cn.conf
server {
    listen       80;
    server_name  www.netkiller.cn;

    charset utf-8;
    access_log  /var/log/nginx/www.netkiller.cn.access.log;

    location / {
        #index  index.html index.htm;
		proxy_pass http://127.0.0.1:8080;
        proxy_set_header    Host    $host;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}		

test.jsp 文件

		<%@ page language="java" import="java.util.*,java.text.SimpleDateFormat" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
	<title>show time</title>
</head>
<body>
<%

	Date date=new Date();
    SimpleDateFormat ss=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String lgtime=ss.format(date);
%>
	<center>
	<h1><%=lgtime%></h1>
	</center>

	<!--# set var="test" value="Hello netkiller!" -->
	<!--# echo var="test" -->

</body>
</html>
		

测试并查看源码,你会看到SSI标签

	<!--# set var="test" value="Hello netkiller!" -->
	<!--# echo var="test" -->		

解决方案

    location / {
        ssi on;
        proxy_set_header Accept-Encoding "";
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header    Host    $host;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    }
		

再次测试,你将看不到SSI标签,只能看到文本输出Hello netkiller!

时间: 2024-08-23 03:58:18

Nginx + Tomcat 有关SSI 的那些事儿的相关文章

均衡负载-nginx+tomcat配置问题

问题描述 nginx+tomcat配置问题 当nginx和2个tomcat配置在一台linux上时,感觉配置是成功的,因为当我两个tomcat同时启动或是有一个没有启动,都是可以访问成功的.但是当nginx和一个tomcat配置在一台linux上,另一个tomcat配置在另一台linux上,这时候只启动其中的一个tomcat是可以正常访问的,启动两个tomcat就有点问题了,一直登入不了,好像一次会话成功提交后被拦截到登入页面了.不知道什么原因,求各位大神指点. 解决方案 是不是不同机器之间有s

nginx+tomcat做的负载均衡

问题描述 nginx+tomcat做的负载均衡 求助个问题,nginx+tomcat做的负载均衡,在高并发时,怎么做到线程同步策略,例如,四台服务器上面部署了四个tomcat,在高并发请求时,毕竟一个tomcat只能锁住一个线程,在这种情况下,怎么样实现对请求的锁的控制? 解决方案 一.为什么需要对Tomcat服务器做负载均衡: Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果有超过500的并发数便会出现Tomcat不能响应新的请求的情况,严重影响网站的运行.另外,在访

NGINX+TOMCAT HTTP header parsing errors

问题描述 NGINX+TOMCAT HTTP header parsing errors org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. org.apache.coyote.http11.Ab

使用Redis存储Nginx+Tomcat负载均衡集群的Session

环境:Cent OS 7.0(虚拟机环境).Nginx 1.9.8.Redis 3.2.1 一.背景 在使用Nginx+Tomcat实现负载均衡的时候,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因为会出现session不同步或者丢失的问题. 二.Nginx安装与配置 1.Nginx安装 网上的资源对于安装Nginx的介绍比较多,例如最简单的为: (1) 获取nginx,在http://nginx.org/download/上可以获取当前最新的

nginx反向代理-nginx+tomcat集群下的压力测试

问题描述 nginx+tomcat集群下的压力测试 我现在在单机下尝试模拟nginx+tomcat集群的配置,开了3台虚拟机,1台作nginx服务器另外两台作tomcat服务器. tomcat下的也设置了maxThreads和timeOut的值. nginx配的是将所有请求全部转发给后端的两台tomcat. 最后再装了nginx的虚拟机上用ab进行压力测试,在 -n 10000 -c 1500的时候 去测试192.168.171.134:18082没有问题,而测用127.0.0.1测nginx的

Nginx+Tomcat负载均衡配置

 Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?下面然给我们详细来了解一下吧 Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下: 1.JAVA JDK安装: #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.t

nginx tomcat负载均衡

问题描述 nginx tomcat负载均衡 我用nginx + 2个tomcat做的负载均衡,2个tomcat用的一套项目,现在需要做一个定时器任务,但是启动后两个tomcat都会去执行,也就是定时任务执行了两次. 如何才能避免这个问题呢?获得如何能获得当前执行的服务器是哪个,从而进行判断只执行一个. 解决方案 Nginx安装安装路径: /usr/local/nginx安装依赖包[root@localhost /]# yum install gcc-c++ [root@localhost /]#

nginx+tomcat负载均衡刷新页面不会更换主机

问题描述 nginx+tomcat负载均衡刷新页面不会更换主机 用nginx+tomcat+memcached做负载均衡,写了一个测试页面,用浏览器访问, 刷新页面每次都是访问的同一个tomcat,是什么问题啊? 配置文件: 测试地址: 解决方案 它的负载均衡要是基于IP地址,你的IP没变,自然每次都可能分配到同一个服务器.

nginx tomcat 配置集群负载

开发的应用采用F5负载均衡交换机,F5将请求转发给5台hp unix服务器,每台服务器有多个webserver实例,对外提供web服务和socket等接口服务.之初,曾有个小小的疑问为何不采用开源的apache.Nginx软件负载,F5设备动辄几十万,价格昂贵?自己一个比较幼稚的问题,后续明白:F5是操作于IOS网络模型的传输层,Nginx.apache是基于http反向代理方式,位于ISO模型的第七层应用层.直白些就是TCP UDP 和http协议的区别,Nginx不能为基于TCP协议的应用提