Nginx + Tomcat 有关SSI 的那些事儿

在工作中使用到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!

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-04-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

从暴力枚举用户到获取域所有信息

我们在进行内网渗透中,会遇到存在 windows 域环境的情况,当我们获得一个内网主机权限之后,这个主机可能没有加入域,我们无法直接通过在这个主机上获取域中的相...

590
来自专栏廖泽恺的专栏

Node Server零基础: 开发环境文件自动重载

在 web 前端开发中,我们会借助 Grunt、Gulp 和 Webpack 等工具的 Watch 模块去监听文件变化,那服务端应该怎么做?其实文件变化的监听依...

6520
来自专栏PHP技术

web基础(回顾)

<?php //chr() 函数从指定的 ASCII 值返回字符。 for($i=32;$i<127;$i++){ echo chr($i); } /...

2626
来自专栏Young Dreamer

前端自动化测试漫长路之——Selenium初探

引言 最近想解决前端开发或测试中的两个问题:一是界面UI的布局适配,能否在测试的过程中,通过命令操作真机打开相应页面然后截屏,通过对图片识别分类,发现有问题的图...

1887
来自专栏DannyHoo的专栏

清理Xcode

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

753
来自专栏NetCore

AppFuse项目笔记(1)

AppFuse项目笔记(1) 一、Appfuse简介 Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Sprin...

2135
来自专栏SDNLAB

OpenDaylight Lithium-SR2 Cluster集群搭建

目的 希望大家能够通过本教程对OpenDaylight集群的基本概念如shard/基本配置有所了解,感受OpenDaylight的High Availabili...

2895
来自专栏互联网开发者交流社区

使用外置的Servlet容器

712
来自专栏battcn

一起来学SpringBoot | 第三篇:SpringBoot日志配置

SpringBoot 内部采用的是 CommonsLogging进行日志记录,但在底层为 JavaUtilLogging、 Log4J2、 Logback 等日...

853
来自专栏Java技术分享

Linux系统学习笔记-目录架构-常用命令

uname  -a     查看内核版本        

17610

扫描关注云+社区