一、系统版本

Nginx使用版本、tomcat使用版本:

Nginx:nginx-1.10.2.tar.gz

Java :Java version: 1.8.0_60, vendor: Oracle Corporation

Tomcat:apache-tomcat-7.0.52.tar.gz apache-tomcat-7.0.52.tar.gz

二、nginx安装

1.安装依赖模块

pcre、zlib、openssl、md5 /sha1(如果系统中没有安装相应模块,需要按照下列方式安装) 

为依赖而安装:

nginx-all-modules noarch 1.10.2-1.el6 epel 7.7 k

nginx-mod-http-geoip x86_64 1.10.2-1.el6 epel 14 k

nginx-mod-http-image-filter x86_64 1.10.2-1.el6 epel 16 k

nginx-mod-http-perl x86_64 1.10.2-1.el6 epel 26 k

nginx-mod-http-xslt-filter x86_64 1.10.2-1.el6 epel 16 k

nginx-mod-mail x86_64 1.10.2-1.el6 epel 43 k

nginx-mod-stream

 

2.安装nginx模块(1.)

3.安装tomcat

从官网上直接解压下载后的tomcat,我使用了两个版本的tomcat分别装在不同机器上。

 在一台服务器(192.168.7.40)上:

 解压:tar zxvf  apache-tomcat-7.0.52.tar.gz

启动:进入apache-tomcat-7.0.52/bin/startup.sh启动

在一台服务器(192.168.7.221)上:

解压:tar zxvf  apache-tomcat-7.0.63.tar.gz 

启动:进入apache-tomcat-7.0.63/bin/startup.sh启动

在浏览器中输入:

http://192.168.7.221:8080/ 可以看到版本为7.0.52的界面

http://192.168.7.40:8080/可以看到版本为7.0.63的界面

三、配置

当前用到的功能Nginx的功能请求转发与负载均衡。

  1. 请求转发

    在conf目录下有一个nginx.conf文件,有如下配置:

     

user root;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

 

# Load dynamic modules. See /usr/share/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

 

events {

worker_connections 1024;

}

 

 

http {

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

 

access_log /var/log/nginx/access.log main;

 

sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

types_hash_max_size 2048;

 

include /etc/nginx/mime.types;

default_type application/octet-stream;

 

# Load modular configuration files from the /etc/nginx/conf.d directory.

# See http://nginx.org/en/docs/ngx_core_module.html#include

# for more information.

include /etc/nginx/conf.d/*.conf;

}

通过该配置文件我们可以找到默认的配置文件的路径在/etc/nginx/conf.d/*.conf;

通过vim /etc/nginx/conf.d/default.conf得到如下配置:

#

# The default server

#

 

server {

listen 80 default_server;

listen [::]:80 default_server;

server_name _;

root /usr/share/nginx/html;

 

# Load configuration files for the default server block.

include /etc/nginx/default.d/*.conf;

 

location / {

proxy_pass http://192.168.7.221:8080;

}

 

error_page 404 /404.html;

location = /40x.html {

}

 

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

 

}

配置介绍:

listen 80;表示监听80端口. 
server_name localhost; 表示转到本地,这里指Nginx的文件夹里。 
location / 表示匹配的路径, 斜杠代表匹配所有的请求。 
root html; 静态文件的路径,其实就是指 /usr/share/nginx/html这个路径。 
index 指当没有指定主页时,默认的指定文件。

开启7.221上面的tomcat之后通过访问192.168.7.201就能访问到http://192.168.7.221:8080;

当然请求转发还有一些高级的用法在这了我就不介绍了,可以参考第四章常见问题2.

  1. 负载均衡

     

    负载均衡功能故名思议将请求按照不同的权重来转发,效果如下:

    详细配置

#

# The default server

#

upstream dis{

server 192.168.7.40:8080;

server 192.168.7.221:8080;

}

 

server {

listen 80 default_server;

listen [::]:80 default_server;

server_name _;

root /usr/share/nginx/html;

 

# Load configuration files for the default server block.

include /etc/nginx/default.d/*.conf;

 

location / {

proxy_pass http://dis;

}

 

error_page 404 /404.html;

location = /40x.html {

}

 

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

}

开启7.221、7.40上面的tomcat之后通过访问192.168.7.201就能相互访问到http://192.168.7.221:8080; http://192.168.7.40:8080;

四、常见问题

1.nginx配置完毕之后添加请求分发功能,但是访问nginx对应的机器之后失效并未出现请求转发

查看nginx错误日志:tail -n 100 /var/log/nginx/error.log

2017/02/09 17:24:43 [crit] 11025#0: *1 connect() to 192.168.7.221:8080 failed (13: Permission denied) while connecting to upstream,

client: 192.168.7.40, server: _, request: "GET / HTTP/1.1", upstream: "http://192.168.7.221:8080/", host: "192.168.7.221"

问题原因:

已确认本地防火墙已关闭,后经过一番查询之后,是因为Selinux

 SeLinux是2.6版本的Linux系统内核中提供的强制访问控制(MAC)系统。算是内置的安全系统,防火墙什么的应该算是外配的。

So:解决方法

1.关闭SeLinux

1.临时关闭(不用重启机器):

setenforce 0                  ##设置SELinux 成为permissive模式

##setenforce 1 设置SELinux 成为enforcing模式

2.修改配置文件需要重启机器:

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可

3.执行下面的命令

setsebool -P httpd_can_Network_connect 1

2.参考博客文章

http://blog.csdn.net/kooalle_cln/article/details/49591493

3.nginx的其他功能包括fair策略、session共享、动静分离在这也不过多的讲,可以参考

http://www.cnblogs.com/jalja/p/6118782.html

4. tomcat中的appBase 和docBase的区别

http://blog.csdn.net/liuxuejin/article/details/9104055

 

 

Nginx+tomcat 负载均衡的更多相关文章

  1. nginx+tomcat负载均衡

    最近练习nginx+tomcat负载均衡.根据一些资料整理了大体思路,最终实现了1个nginx+2个tomcat负载均衡. 安装JDK 1>进入安装目录,给所有用户添加可执行的权限 #chmod ...

  2. linux+nginx+tomcat负载均衡,实现session同步

    linux+nginx+tomcat负载均衡,实现session同步 花了一个上午的时间研究nginx+tomcat的负载均衡测试,集群环境搭建比较顺利,但是session同步的问题折腾了几个小时才搞 ...

  3. Nginx + Tomcat 负载均衡配置详解

    Nginx常用操作指南一.Nginx 与 Tomcat 安装.配置及优化1. 检查和安装依赖项 yum -y install gcc pcre pcre-devel zlib zlib-devel o ...

  4. Nginx+Tomcat负载均衡、动静分离群集

    Nginx+Tomcat负载均衡.动静分离群集 目录 Nginx+Tomcat负载均衡.动静分离群集 一.Tomcat 1. Tomcat简介 2. Tomcat重要目录 二.Nginx负载均衡原理 ...

  5. Linux下Nginx+Tomcat负载均衡和动静分离配置要点

    本文使用的Linux发行版:CentOS6.7 下载地址:https://wiki.centos.org/Download 一.安装Nginx 下载源:wget http://nginx.org/pa ...

  6. Nginx+tomcat负载均衡时静态页面报404

    百度到的问题解决BLOG http://os.51cto.com/art/201204/326843.htm nginx+2台tomcat负载均衡,应用程序已部署,单独访问tomcat时,可以访问到所 ...

  7. nginx+tomcat负载均衡策略

    測试环境均为本地,測试软件为: nginx-1.6.0,apache-tomcat-7.0.42-1.apache-tomcat-7.0.42-2.apache-tomcat-7.0.42-3 利用n ...

  8. nginx+tomcat负载均衡和session复制

    本文介绍下传统的tomcat负载均衡和session复制. session复制是基于JVM内存的,当然在当今的互联网大数据时代,有更好的替代方案,如将session数据保存在Redis中. 1.安装n ...

  9. nginx+tomcat负载均衡实验

    导言: 本次实验,tomcat就直接使用录原生的主页,只是简单修改主页识别主机,nginx也是直接在欢迎页上面修改的,直接实现负载均衡. 主机1:192.168.100.156 nginx+tomca ...

  10. Nginx+tomcat负载均衡配置

    Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下: 1.JAVA JDK ...

随机推荐

  1. 删除一个数字之后数列gcd最大

    ★实验任务 顾名思义,互质序列是满足序列元素的 gcd 为 1 的序列.比如[1,2,3], [4,7,8],都是互质序列.[3,6,9]不是互质序列.现在并不要求你找出一个互质 序列,那样太简单了! ...

  2. 31_网络编程(Socket套接字编程)_讲义

    今日内容介绍 1.网络三要素及传输协议 2.实现UDP协议的发送端和接收端 3.实现TCP协议的客户端和服务器 4.TCP上传文件案例 01网络模型 *A:网络模型 TCP/IP协议中的四层分别是应用 ...

  3. Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?

    Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?    答:    网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg- ...

  4. 『编程题全队』Alpha 阶段冲刺博客Day2

    1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威:   确定了本阶段的团队目标   确定了个人所分配的任务(主要为客户端GUI模块) 孙慧君:    确定了自己的任务,并着手开始环境 ...

  5. mongo学习1 (转)

    关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”. 一: 下载 上Mon ...

  6. JDK和CGLIB动态代理原理

    1.JDK动态代理利用拦截器(拦截器必须实现InvocationHanlder)加上反射机制生成一个实现代理接口的匿名类, 在调用具体方法前调用InvokeHandler来处理. 2.CGLiB动态代 ...

  7. 用JavaScript添加选择按钮的背景颜色和juqery添加选择按钮的背景色

    在项目开发中经常遇到要选择的按钮,选择完之后被选择的按钮的背景色会发生变化,表示被选择 样式图如下: 每点击一个数字,相应的背景色变为蓝色,其他的依旧是白色,先用JavaScript实现 html代码 ...

  8. Python批量文件重命名

    今天,得到一个里面都是图片的文件夹,但是图片都没有后缀,因此想用Pythton批量地为所有的文件加上".jpg"的后缀,代码如下: #-*- coding:utf-8 -*- #重 ...

  9. BZOJ5324 JXOI2018守卫(区间dp)

    对于每个区间[l,r],显然右端点r是必须放置守卫的.考虑其不能监视到的点,构成一段段区间.一个非常显然但我就是想不到的性质是,对于这样的某个区间[x,y],在(y+1,r)内的点都是不能监视到这个区 ...

  10. django中使用FastDFS分布式文件系统接口代码实现文件上传、下载、更新、删除

    运维使用docker部署好之后FastDFS分布式文件系统之后,提供给我接口如下: fastdfs tracker 192.168.1.216 192.168.1.217 storage 192.16 ...