小站安装好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. vector定义初始化

    头文件 #include<vector> using std::vector; vector<T> v1; vector<T> v2(v1); vector< ...

  2. react native 的图表开源组件react-native-chart-android

    react-native-chart-android是一个图表开源组件,使用方法可以去这里 由于需要在数据上加上触摸事件,而github上没有说明看源码找了半天才找到下面的解决方法,特此记录一下: 在 ...

  3. 编译CM14.1(sudmod71.1)过程记录

    编译CM14.1内存要求很高,至少8G以上,我的6G也可以搞定,交换空间分配大一点. 1.安装平台 建议安装Deepin 15.3桌面版系统,系统UI好看. 2.配置环境 (1)安装编译依赖库 sud ...

  4. Java常见Exception整理

    前言: 技术开发入坑近1年,摸打滚爬,各种升级打怪.因目前从事Java相关,故整理了一下并把常见的异常(Exception)贴出来,一来为了后续提醒自己,二来供即将入坑的朋友打一下预防针!A级(代码逻 ...

  5. angular路由——ui.route

    angular路由 使用案例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  6. SUSE系统查看各种信息

    系统版本 # 显示内核版本 uname -a # 可看gcc版本 cat /proc/version # 显示linux基准库 lsb_release -a # 显示Suse版本准确版本 cat /e ...

  7. win10 右键菜单添加Git Hash Here

    1.通过在"运行"中输入'regedit',打开注册表. 2.找到[HKEY_CLASSES_ROOT\Directory\Background]. 3.在[Background] ...

  8. C# 的TCP Socket (异步方式)

    简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...

  9. JavaScript 中 onload 事件绑定多个方法

    当需要调用的方法较多时,我们可以进一步优化,编写一个专门用于绑定 onload事件的方法: function addLoadEvent(func) { //把现有的 window.onload 事件处 ...

  10. nginx安装与配置

    一.在线安装 ubuntu 安装 sudo apt-get install nginx 安装后文件结构为: 配置文件:/etc/nginx ,并且每台虚拟主机已经安排在 /etc/nginx/site ...