Nginx与tomcat整合可以实现服务器的负载均衡。
在用户的请求发往服务器进行处理时,如果请求太多处理不了,容易造成服务器阻塞、响应慢等情况。这时,如果我们可以有多台服务器的话,就可以实现把请求派发给各台服务器进行处理,这个分发的过程就是由Nginx完成的。同样,由于Tomcat主要用来处理动态的内容,比如jsp文件。那么静态的html/图片等资源就可以交给Nginx来处理,期间也用到了分发。对于有多台服务器时,用一台服务器装Nginx作为代理服务器,把所有请求汇集到这里进行分发到其他服务器。而对于一台服务器实现动静态分离时,则需要在一台服务器上同时搭建Nignx和tomcat,并进行整合。其原理都是一样的,配置的文件也几乎一样。这里,我们只讲在一台服务器上的整合。
一:安装Nignx
sudo apt-get install nginx
二:配置nginx.conf文件
vi 打开nginx文件后,找到http{}节点,在里面添加:
upstream 你的域名{
server 你的云主机IP:80;
}
然后添加一个server。如果是配置多台服务器,则在上面添加多个upstream,下面对应多个server进行分发。这里我只有一个服务器,所以配置一个:
server {
#侦听80端口
listen 80;
#定义使用域名访问
server_name www.xx.com;
#设定本虚拟主机的访问日志
access_log logs/www.xx.com.access.log main;
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root;
}
location ~ .*.[jsp|do|action]$ { #所有jsp页面以及do/action请求均交由 tomcat处理
index index.jsp;
proxy_pass http://你的域名:80; #转向tomcat处理
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #设定访问静态文件直接读取,不经过tomcat。过期时间30天
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 1h;
}
#设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
}
三:整合tomcat
sudo vi /etc/nginx/conf.d/proxy.conf
输入
#!nginx (-)
按Esc退出编辑模式,输入 :wq 保存并退出。
配置defalut文件:
sudo vi /etc/nginx/sites-available/defalut
找到server{}添加:
#动态交给tomcat
location ~ .*.[jsp|do|action]$ {
index index.jsp;
proxy_pass 你的域名:80;
}
静态直接读取,不结果tomcat。过去时间30天
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*.(js|css)?$ {
expires 1h;
}
保存并退出。
四:测试。
重启你的云主机。登录ubuntu后,分别启动nginx和tomcat。(注意:重新部署项目,或者每次关机重启后,都需要分别启动tomcat和nginx)!启动nginx:/etc/init.d/nginx 启动tomcat:bin目录下 ./startup.sh
然后在浏览器分别输入 你的域名 以及 你的域名:80/index.jsp ,发现都跳转到同一页面。说明整合成功~
Nginx与Tomcat整合教程

本文介绍如何通过Nginx与Tomcat整合实现服务器负载均衡及动静态内容分离,包括安装Nginx、配置nginx.conf文件、整合Tomcat等步骤。

131

被折叠的 条评论
为什么被折叠?



