tengine/nginx-tomcat动静分离遇到的问题
小站安装好tengine后,接下来的工作就是要配置好tengine让其和后端的tomcat正常的连接工作起来,tengine的配置文件本身比较简单,网上有大量的相关介绍说明文档,我这里只是摘出我配置过程中遇到一些坑,分享给有需要的朋友们:
访问首页报403错误
|
1
2
3
4
5
6
7
|
403 ForbiddenYou 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 "%r" %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;proxy_pass http://127.0.0.1:8080;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 30d;} }}
|
tengine/nginx-tomcat动静分离遇到的问题的更多相关文章
- nginx+tomcat动静分离结构
本文采用另一种策略对动静分离进行演示,它的大致结构如图 2 所示. 图 2. 本文设计的动静分离结构 在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 ...
- nginx tomcat 动静分离
所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片.html等静态的文件,tomcat(或weblogic)处理jsp.do等动态文件</span>,从而达到动静页面 ...
- Nginx + Tomcat 动静分离实现负载均衡(转)
0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 # 定义Nginx运行的用户 和 用户组 如果对 ...
- Nginx + Tomcat 动静分离实现负载均衡
0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 # 定义Nginx运行的用户 和 用户组 如果对 ...
- 企业实战Nginx+Tomcat动静分离架构的技术分享
Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat.Re ...
- 基于前后端分离的Nginx+Tomcat动静分离
1.什么是动静分离 "动"与"静" 在弄清动静分离之前,我们要先明白什么是动,什么是静. 在Web开发中,通常来说,动态资源其实就是指那些后台资源,而静态资源就 ...
- 【转载】Nginx+Tomcat 动静分离实现负载均衡
0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 1 # 定义Nginx运行的用户 和 用户组 如 ...
- 负载均衡 | Nginx+Tomcat 动静分离实现负载均衡
0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 基本配置这个文件,就可以实现负载了.但是里面的各 ...
- Nginx + Tomcat动静分离 (转)
什么是动静分离 为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时 ...
- Nginx+Tomcat动静分离
需求:nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能. 准备软件: 下载jdk ...
随机推荐
- java版简易socket客户端
android项目需要使用到心跳, 于是编写了一个简易的socket客户端程序 主要功能是给服务端发送心跳包,保持在线状态 没有使用框架,这样避免了需要引入包,直接使用的阻塞Socket通信. 主要逻 ...
- com/android/dx/command/dexer/Main : Unsupported major.minor version 52.0
这是由于JDK版本不一致造成的,指的是高版本的JDK编译的class不能放在低版本的JDK上运行. Version 52,表示JDK8编译的class不能运行在JDK7上,所以需要在本地安装JDK8.
- BZOJ 1226: [SDOI2009]学校食堂Dining
1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 730 Solved: 446[Submit][ ...
- Javascript中JSON对象的操作以及遍历key/value
//遍历获取值: function text(){ var json = {"options":"[{/"text/":/"王家湾/&quo ...
- 纪念BLives 1.0版本发布
历时两个多月的时间,BLives程序1.0发布,在开发程序期间自己经历了很多,考试,恋爱,学业,自己很纠结 很伤心,有时候很无助,为了让自己有事干,我在考试备考期间去设计程序- -#,虽然程序设计的一 ...
- zookeeper原理解析-客户端与服务器端交互
Zookeeper集群中server数量总是确定的,所以集群中的server交互采用比较可靠的bio长连接模型:不同于集群中sever间交互zookeeper客户端其实数量是未知的,为了提高zooke ...
- Java中创建对象的5种方式
作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...
- checkbox全选与非全选之间的切换
<div id="congras_area"> <input type="checkbox" name="" id=&qu ...
- Js异步上传加进度条
http://www.ruanyifeng.com/blog/2012/09/xmlhttprequest_level_2.html http://www.cnblogs.com/yuanlong10 ...
- docker run elasticsearch
docker run -d --name=esNode1 -p 9200:9200 -p 9300:9300 elasticsearch:2.3 -Des.network.publish_host=& ...