nginx中SSI问题

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33616529/article/details/79061608

(概念摘自网络)

一.什么是SSI
SSI:Server Side Include,是一种基于服务端的网页制作技术,大多数(尤其是基于Unix平台)的web服务器如Netscape Enterprise Server等均支持SSI命令。
它的工作原因是:在页面内容发送到客户端之前,使用SSI指令将文本、图片或代码信息包含到网页中。对于在多个文件中重复出现内容,使用SSI是一种简便的方法,将内容存入一个包含文件中即可,不必将其输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。

二.如何在nginx上配置SSI
需要的选项主要是以下三个:
ssi: 默认值off,启用ssi时将其设为on
ssi_silent_errors: 默认值off,开启后在处理SSI文件出错时不输出错误提示"[an error occurred while processing the directive]"。
ssi_types: 默认是text/html,所以如果需支持html,则不需要设置这句,如果需要支持shtml则需要设置:ssi_types text/shtml
三个参数可以放在http, server或location作用域下。

三. 实例

server {
    listen  10.3.9.27:80;
    server_name  www.ball.com;
    location / {
        ssi on;
        ssi_silent_errors on;
        ssi_types text/shtml;
        index index.shtml;
        root /usr/local/web/wwwroot;
        expires 30d;
        access_log      /data/logs/www.ball.com-access_log main;
    }
}


四:结合实际问题

生产环境遇到404 requested resources is not available。如图:


查找对应实际的服务器日志,搜索不到对应时间的404错误,查看nginx配置,定位不到问题原因

用微信开发者工具调试过开发环境和测试环境,都无法重现,经大神查看后定位到问题原因:


由于页面中使用ssi命令引入了一个文件,而该文件并不存在,所以报404错误。至于本地和开发环境能启动成功,是因为开发环境和测试环境并没有使用nginx。


后来,我在本地启动nginx配置中添加

        ssi on;
        ssi_silent_errors on;  
        ssi_types text/shtml; 

重启nginx,果然404,删除上述注释掉的代码,就OK了。










展开阅读全文

ssi问题

11-23

各位高手帮忙解解一下问题:rn我建立一个ssi工程,但是再页面点提交的时候总是报错如下:rnStruts Problem ReportrnStruts has detected an unhandled exception: rnrnMessages: No result defined for action com.action.GuolvAction and result input rn rnFile: file:/D:/MyEclipse/workspace/membersys/WebRoot/WEB-INF/classes/com/xml/guolv.xml rnLine number: 12 rnColumn number: 89 rnrnrn--------------------------------------------------------------------------------rnrn /WEB-INF/jsp/manage/guolv/guolv_list.jsprn rn rn /WEB-INF/jsp/manage/guolv/add_guolv.jsprn rnrn--------------------------------------------------------------------------------rnrnStacktracesrnNo result defined for action com.action.GuolvAction and result input - action - file:/D:/MyEclipse/workspace/membersys/WebRoot/WEB-INF/classes/com/xml/guolv.xml:12:89 rn com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:350)rn com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)rn com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)rn org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)rn com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)rn com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)rn com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)rn com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)rn com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)rn com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptorrnrn小弟不知道怎么解决啊,急急急!在线等 论坛

SSI JSON问题

04-12

action:rnpublic class UserActionrnrn private User user;rn rn private UserService userService;rn @JSON(name="user")rn public User getUser()rn rn return user;rn rnrn public void setUser(User user)rn rn this.user = user;rn rnrn rnrn public UserService getUserService()rn rn return userService;rn rnrn public void setUserService(UserService userService)rn rn this.userService = userService;rn rn public String add()rn System.out.println(user.getUsername());rn return Action.SUCCESS;rn rnrnrnstruts.xml:rnrn rn rn rn rn rn rn rnrnrn报错:rn2012-4-12 11:59:04 org.apache.catalina.core.StandardWrapperValve invokern严重: Servlet.service() for servlet default threw exceptionrnjava.lang.AbstractMethodError: org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.getClientInfo()Ljava/util/Properties;rn at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)rn at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)rn at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)rn at java.lang.reflect.Method.invoke(Method.java:597)rn at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:172)rn at $Proxy5.getClientInfo(Unknown Source)rn at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)rn at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)rn at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)rn at java.lang.reflect.Method.invoke(Method.java:597)rn at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:224)rn at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)rn at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)rn at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)rn at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)rn at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)rn at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)rn at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)rn at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)rn at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)rn at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)rn at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)rn at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)rn at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)rn at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)rn at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)rn at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)rn at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)rnrnrn求解决!!!!!!!!!!!!! 论坛

SSI框架问题

08-31

以下是action中的两个方法rnpublic String doLoginCheck() rnString member_code = loginRegisterService.doLogin(this);rn// 获取用户角色列表rnif (member_code != null) rnList list = loginRegisterServicern.byMemberGetRoleList(member_code);rnsession.put("roleList", list);rnsession.put("member_code", member_code);rnsession.put("email", this.getEmail());rnif (list.size() > 0) rnsession.put("company_code", list.get(0).getCompany_code());rnrnrnreturn SUCCESS;rnrnrn/*rn * 获取用户列表rn */rnpublic String getMemberList() rnString company_code = (String) session.get("company_code");rnList list = memberManagerService.getMemberList(company_code);rnsession.put("memberList", list);rnreturn SUCCESS;rnrnrn下面是vm画面rnrn rn#foreach($item in $roleList)rn $!item.name $!item.codern#endrnrnrn rn rn 真实姓名rn 用户codern 用户邮箱rnrn#foreach($item in $memberList)rn rn $!item.truenamern $!item.codern $!item.emailrnrn#endrnrn我明明将roleList和memberList都放入session中去了,但是无论如何结果只有roleList能够在画面上显示出来,而rnmemberList这个东西始终无法在画面上出现,而且我单独写的 $!memberList 和 $!roleList rnrnsuccess [com.hansong.data.bean.Role@8ee884, com.hansong.data.bean.Role@433ba0] rnmemberList被解析成了success,而roleList解析的结果倒是正常的。。这究竟是哪里的问题。rn还有就是只要我当前的vm画面出现了 $memberList这个东西,那么我根本不用出触发什么,他自动会去执行action中的getMemberList() 这个方法。。。将画面上的 $memberList删除掉就不会执行了。。。rn 论坛

没有更多推荐了,返回首页