Linux下Nginx和Resin整合安装

这里以CentOS为例子进行说明
一、安装Nginx、Java和Resin
1. 安装Nginx详细的例子可以见 Linux下源码方式安装Nginx和PHP(FastCGI)
2. 安装JDK
如果系统中没有Java环境,在安装Resin之前需要先安装Java,这里使用bin方式。

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/6u43-b01/jdk-6u43-linux-x64.bin
chmod +x jdk-6u43-linux-x64.bin
./jdk-6u43-linux-x64.bin

这样就将JDK安装好了,如果想直接在命令行中可以执行java命令,需要将jdk的安装目录(这里以/usr/local/jdk1.6.0_43为例)加入到PATH环境变量中(Linux中环境变量的路径之间使用:间隔):

cat >>/etc/profile<
3. 安装Resin
有两种方式安装Resin,一种是通过源码的方式,从官网上面下载tar.gz结尾的源码安装包,然后使用make&&make install命令进行安装,安装完成之后使用%RESIN_HOME%/bin/resin.sh start命令启动;另外一种是直接下载zip包然后解压缩就可以了,启动resin使用java -jar %RESIN_HOME%/lib/resin.jar start命令。我个人更倾向于使用后面一种方式,简单方便。

二、配置Nginx和Resin进行整合
Nginx和Resin进行整合的方式就是将Nginx作为一个反向代理服务器,这样有个最大的好处就是可以进行负载均衡,即前段的Nginx可以对应后端的n个Resin服务器。
1. 首先在配置Nginx的代理信息:

http {
# 代理相关配置
# 指定服务器名称哈希表的框大小
server_names_hash_bucket_size 128;
# 下面两个参数用来设定客户端请求的Header缓冲区大小的,如果Cookie内容比较大的内容应该增大该值(出现400或414错误)
client_header_buffer_size 32k;
large_client_header_buffers 4 128k;
# 允许客户端请求的最大单文件字节数
client_max_body_size 8m;
# 缓冲区代理缓冲用户端请求的最大字节数,可以理解为服务器端保存到本地再传给客户端
client_body_buffer_size 128k;
# 后端服务器连接的超时时间(秒)
proxy_connect_timeout 60;
# 连接成功之后后端服务器处理请求的时间(秒)
proxy_read_timeout 600;
# 后端服务器数据回传的时间(秒),即在规定的时间内后端服务器必须传完所有的数据
proxy_send_timeout 600;
# 是否开启代理缓冲(on|off),默认为on
proxy_buffering on;
# 设置缓冲区大小,存放后端服务器响应的Header内容,通常跟proxy_buffers设置相同
proxy_buffer_size 32k;
# 数据缓冲区大小
proxy_buffers 4 64k;
# 高负荷下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 128k;
# 设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘
proxy_temp_file_write_size 128k;
# 不允许代理端主动关闭连接
proxy_ignore_client_abort on;
# 设置代理缓存的目录
proxy_temp_path /data/proxy_tmp_dir;
# 设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB
proxy_cache_path /data/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
}

上面proxy的配置信息也可以单独存放到一个文件中,然后使用include进行引用。

2. 配置后端服务器,可以设置多个服务器进行负载均衡

http {
# 给后端服务器集群取一个名字,后面在proxy_pass指令中使用
upstream tdt_resin_servers {
# 设定server的地址和端口,后面的参数可以不设置。
# weight为服务器的权重,默认为1;
# max_fails表示在fail_timeout时间内检测这个服务器是否可用时产生的最多失败请求数,默认为1,可以设置0关闭检查。
# fail_timeout设定尝试连接目标服务器的时间,默认为10秒。
server 127.0.0.1:8080 weight=1 max_fails=3 fail_timeout=30s;
}
}

3. 在Server中进行配置


http {
server {
listen 80;
server_name *.example.com;
index index.jsp;
charset utf-8;
# 配置发布目录,如果设置资源动静分离的话最好跟resin中的一致,这样就不需要在location中再定义了
root /wwwroot/example-com/;

# 默认的请求都交给resin处理(如果javaee webapp使用了rewrite映射或者RESTful风格的话,需要将默认的请求都交给resin)
location / {
# 如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
# 使用的缓存,cache_one在前面使用proxy_path_cache定义过
proxy_cache cache_one;
# 针对不同的HTTP状态码设置不同的缓存时间
proxy_cache_valid 200 304 12h;
# 以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
proxy_cache_key $host$uri$is_args$args;

# 向后台发送请求的Host信息(域名)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tdt_resin_servers;
expires 1h;
}

# 配置动静分离,静态页面的文件直接从Nginx
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
# 静态文件地址,如果上面配置了这里可以不用指定
root /wwwroot/example-com/;
expires 1d;
}
}
}

参考资料:
Nginx动静分离经典案例配置
用nginx和resin来实现动静分离
Nginx+resin调优文档[原创]
Nginx HTTP负载均衡/反向代理的相关参数测试
nginx缓存配置
CentOS下nginx、resin、memcached整合
Resin多端口设置以及Nginx反向代理设置
Nginx+resin+proxy_cache高速缓存平台搭建
搭建web服务器(jdk+nginx+resin整合)
nginx下绑定泛域名到指定目录
nginx泛解析一例
nginx proxy_pass后的url加不加/的区别

发表评论

电子邮件地址不会被公开。 必填项已用*标注