小站安装好tengine后,接下来的工作就是要配置好tengine让其和后端的tomcat正常的连接工作起来,tengine的配置文件本身比较简单,网上有大量的相关介绍说明文档,我这里只是摘出我配置过程中遇到一些坑,分享给有需要的朋友们:

访问首页报403错误

1
2
3
4
5
6
7
403 Forbidden
You don't have permission to access the URL on this server. 
Sorry for the inconvenience.Please report this message and include the 
following information to us.Thank you very much!
Date:    2014/05/31 15:15:28    
Powered by Tengine/2.0.1

比如访问网站 www.coolskill.net 时报403错误,此时要检查当前nginx的用户是哪一个,有没有权限操作对应的资源文件,起初我并没有配置用户信息,导致浏览器请求css/js文件时直接403;另外还需要确认的是网站的根目录下有没有index中配置的相关文件。这个问题困绕了我较长一段时间,由于我的首页地址配置的是index.htm,此地址根目录文件夹下并无此文件。在我之前的认识中,根据我的proxy配置tengine/nginx会将index.htm的请求路由到后端tomcat处理,但事实上并非如此,我就在根目录下建了一个名为index.htm的文件,于是就解决了这个问题.

tomcat access日志记录IP为nginx地址

在tomcat上记录下来的访问日志请求IP都是tengine的地址,此时需要在nginx转发时配置当前请求header:

1
proxy_set_header X-Real-IP $remote_addr;

同时还需要修改tomcat日志参数,在日志格式中添加%{X-Real-IP}i,如下所示:

1
2
3
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
   prefix="acc." suffix=".txt"  rotatable="true" fileDateFormat="yyyyMMdd"
   pattern="%{X-Real-IP}i %h %l %u %t &quot;%r&quot; %s %b" />

了解日志系统MDC概念的人肯定对%{X-Real-IP}i这种写法感到很眼熟,是的,这个X-Real-IP就是我们在nginx.conf中配置的那个请求头字段名,我们可以在TOMCAT后台将这个字段打印出来。后面紧跟着的那个字母i表示的就是从请求头中取值(for incoming headers)。关于tomcat上访问日志的配置格式详细情况可以参考:http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html这个文档中的介绍。

以下为本站的nginx.conf配置文件部分内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
user  xxx xxx;
http
{
  include       mime.types;
  include /usr/local/nginx/conf/proxy.conf;
  server
  {
listen       80;
server_name  www.coolskill.net coolskill.net;
index index.html  index.jsp  index.htm;
root  xxxxx;
location ~ (\.htm)|(\.jsp)$
{
proxy_redirect off;
proxy_set_header HOST www.coolskill.net;
proxy_set_header X-Real-IP $remote_addr;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 30d;
}
    }
}

 

tengine/nginx-tomcat动静分离遇到的问题的更多相关文章

  1. nginx+tomcat动静分离结构

    本文采用另一种策略对动静分离进行演示,它的大致结构如图 2 所示. 图 2. 本文设计的动静分离结构 在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 ...

  2. nginx tomcat 动静分离

    所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片.html等静态的文件,tomcat(或weblogic)处理jsp.do等动态文件</span>,从而达到动静页面 ...

  3. Nginx + Tomcat 动静分离实现负载均衡(转)

    0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 # 定义Nginx运行的用户 和 用户组 如果对 ...

  4. Nginx + Tomcat 动静分离实现负载均衡

    0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 # 定义Nginx运行的用户 和 用户组 如果对 ...

  5. 企业实战Nginx+Tomcat动静分离架构的技术分享

    Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat.Re ...

  6. 基于前后端分离的Nginx+Tomcat动静分离

    1.什么是动静分离 "动"与"静" 在弄清动静分离之前,我们要先明白什么是动,什么是静. 在Web开发中,通常来说,动态资源其实就是指那些后台资源,而静态资源就 ...

  7. 【转载】Nginx+Tomcat 动静分离实现负载均衡

    0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 1 # 定义Nginx运行的用户 和 用户组 如 ...

  8. 负载均衡 | Nginx+Tomcat 动静分离实现负载均衡

    0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 基本配置这个文件,就可以实现负载了.但是里面的各 ...

  9. Nginx + Tomcat动静分离 (转)

    什么是动静分离 为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时 ...

  10. Nginx+Tomcat动静分离

    需求:nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能. 准备软件: 下载jdk ...

随机推荐

  1. 1226关于count(*)不走主键索引反而走二级索引

    转自 http://www.2cto.com/database/201508/433975.html mysqlcount(*)会选哪个索引? 2015-08-19      0个评论    来源:D ...

  2. caffe添加自己的层

    首先修改src/caffe/proto/下的caffe.proto,修改好后需要编译 然后修改include/caffe/layers/logwxl_layer.hpp 然后修改src/caffe/l ...

  3. poj2217

    Secretary Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1257   Accepted: 515 Descript ...

  4. C# Aspose word 替换指定键值数据

    今天研究一天的导出word,一开始准备选用为软件自带的office,但是有局限性,机子上必须安装office才能使用,最后在网上搜了一下资料aspose开源的 小公司没得钱,你懂得.最后选择了这款 开 ...

  5. [CodeIgniter] 在自定义类库中使用config配置项

    通常情况下,Controller 中的方法可以通过 $this->config->item('item_name') 的方式来加载配置文件中的值 但是如果不继承 CI_Controller ...

  6. c语言之I/O函数

    c语言中常用的I/O函数 最常用的字符串的标准I/O函数有getchar().putchar().gets().puts().scanf().printf().fputs().fgets().getc ...

  7. 【bzoj1415】 Noi2005—聪聪和可可

    http://www.lydsy.com/JudgeOnline/problem.php?id=1415 (题目链接) 题意 一张图,聪聪想吃可可.每单位时间聪聪可以先移动两次:可可后移动一次或停在原 ...

  8. Java网络编程--简单聊天程序

    背景 毕业设计前的练手,学校小比赛中的一个题目. 开发环境 Java(eclipse)+Mysql 简介 使用Java+Mysql开发以个简单的聊天工具,在本次项目中实现了: 1. 用户登录(客户端至 ...

  9. Redis Cluster

    使用 Redis Cluster Redis 3.0 在2015年出了Stable版本,3.0版本相对于2.8版本带来的主要新特性包括: 实现了Redis Cluster,从而做到了对集群的支持: 引 ...

  10. Nginx中root与alias的用法及区别:

    Nginx中root与alias都是定义location {}块中虚拟目录访问的文件位置: 先看看两者在用法上的区别: location /img/ { alias /var/www/image/; ...