Nginx的安装:
1、添加YUM 的Nginx源
为Centos本身默认的yum源不带Nginx,所以YUM安装的话需要增加Nginx的YUM源。否则:
No package nginx available.
Error: Nothing to do
执行命令:
rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
-Uvh:升级软件包
-h:显示进度信息
-v:显示指令执行过程
-U:升级指定的程序包 update
2.安装Nginx
执行命令: yum -y install nginx
-y:自动应答yes
如果yun被lock了:[root@senqi01 usr]# rm -rf /var/run/yum.pid
3、启动Nginx
service nginx start
或者:
/usr/sbin/nginx 启动
nginx -s stop 快速关闭
nginx -s quit 安全关闭
nginx -s reload 重载配置文件
4、查看Nginx安装路径
whereis nginx
是否安装:rpm -qa | grep nginx
5、查看Nginx服务是否成功
netstat –anotp | grep 80
6、Nginx的HTML存放路径
/usr/share/nginx/html
7、Nginx配置文件存放目录
/etc/nginx/nginx.conf
8、访问测试
http://ip地址
4.安装第1套Tomcat
1.上传Tomcat到linux上
2.解压Tomcat到/usr/local下
tar -xvf apache-tomcat-8.5.15.tar.gz -C /usr/local
3.修改解压缩后的Tomcat文件夹名字
mv /usr/local/apache-tomcat-8.5.15 /usr/local/tomcat1
4.修改第一套Tomcat配置文件
vi /usr/local/tomcat1/conf/server.xml
保留原值。
5.启动Tomcat服务器1
cd /usr/local/tomcat1/bin
启动命令:./startup.sh
6.测试服务器是否正常启动
打开浏览器输入http://服务器地址:8080
看是否能浏览到TOMCAT欢迎页面。
4.2.安装第2套Tomcat
1.上传Tomcat到linux上
2.解压Tomcat到/usr/local下
tar -xvf apache-tomcat-8.5.15.tar.gz -C /usr/local
3.修改解压缩后的Tomcat文件夹名字
mv /usr/local/apache-tomcat-8.5.15 /usr/local/tomcat2
4.修改第2套Tomcat配置文件
vi /usr/local/tomcat2/conf/server.xml
5.启动Tomcat服务器2
cd /usr/local/tomcat2/bin
启动命令:./startup.sh
6.测试服务器是否正常启动
打开浏览器输入http://服务器地址:8081
看是否能浏览到TOMCAT欢迎页面。
7、在每个tomcat服务器的server.xml文件配置下面路径
此外:不想重复拷贝项目到/usr/tomcat8.5.35/webapps下,可以配置Context节点:
4.3.配置Nginx负载均衡
1、修改Nginx配置文件
vi /etc/nginx/conf.d/default.conf
upstream sunny{
server 192.168.1.18:8080 max_fails=1 fail_timeout=10s; //Tomcat服务器1
server 192.168.1.18:8081 max_fails=1 fail_timeout=10s; //Tomcat服务器2
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://sunny; //配置转发
proxy_connect_timeout 30s; //和后端服务器建立连接的超时时间,记住不要超过75s proxy_read_timeout 30s; //读超时时间
proxy_send_timeout 30s; //发送超时时间
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
关于max_fails 参数:max_fails默认为1,fail_timeout默 认为10秒,也就是说,默认情况下后端服务器在10秒钟之内可以容许有一次的失 败,如果超过1次则视为该服务器有问题,将该服务器标记为不可用。等待10秒后再 将请求发给该服务器,以此类推进行后端服务器的健康检查。但如果我将max_fails设置为0, 则代表不对后端服务器进行健康检查,这样一来fail_timeout参数也就没什么意义了。
proxy_connect_timeout
后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_read_timeout
连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_send_timeout
后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
2、配置完成后,重启Nginx服务器
systemctl restart nginx
或者:
nginx -s reload
3、测试,访问nginx的端口(80),看是否可以访问tomcat首页
**注意:**如果代理失败,尝试禁用SELinux(Security-Enhanced Linux)强制访问控制
修改/etc/selinux/config
设置:SELINUX=disabled 然后重启机器或虚拟机reboot
5.Nginx+Tomcat动静分离
1.上传web项目到linux
2.使用部署到2台tomcat
3.分别使用2台tomcat自己的端口号8080,8081访问test1.jsp,nginx的80端口访问test1.jsp,页面正常
1、修改Nginx配置文件
vi /etc/nginx/conf.d/default.conf
在3.3配置的基础上,添加如下配置:
server {
之前location / {} 中的proxy_pass删除
location ~* \.(gif|jpg|jpeg|png|bmp)$ {
root /usr/share/nginx/html;
}
location ~* \.(jsp|do|action)$ {
proxy_pass http://sunny;
}
}
location / {
root 指定根目录地址
index 默认首页
}
/:通用匹配,匹配任何未匹配到其它location的请求,相当于switch中的default
location ~ pattern:区分大小写的正则匹配,~* 为不区分
2、重启Nginx
3、访问nginx所在的主机IP地址:http://IP/test1.jsp, 图片不能正常显示
在Nginx服务器的静态资源目录 上传quan.png(注意和项目的目录保持一致)到
/usr/share/nginx/html/img/quan.png
重新启动nginx
Nginx -s reload
再次浏览,图片可以正常显示了!
6.Nginx+Tomcat集群负载均衡
观察Session Id的值:发现一直改变
6.1解决Session共享:
(1)session复制方式:当任何服务器中session值发生改变,都会将该改变广播给其他服务器,当其他服务器收到广播后也做相应的改变,从而实现session在所有服务器中一直。缺点 当集群中tomcat服务器很多时会增加网络负荷,性能低下。实现方式:
步骤一:2台tomcat放开一段注释
vi /usr/tomcat/conf/server.xml
步骤二:
在项目的web.xml末尾的标签中添加:(设置应用可以处于集群环境中)
重启再次测试,但首次访问速度较慢。
(2)ip_hash:
nginx -s reload:
6.3.Nginx负载均衡策略
1、轮询(默认)
每个web请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream nginxDemo {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
2、最少连接
web请求会被转发到连接数最少的服务器上。
upstream nginxDemo {
least_conn;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
3、weight 权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认是1。
#服务器A和服务器B的访问比例为:2-1; 比如有3个请求,前两个会访问A,第三个访问B
upstream nginxDemo {
server 127.0.0.1:8081 weight=2; #服务器A
server 127.0.0.1:8082; #服务器B
}
4、ip_hash
每个请求按访问ip的hash值分配,这样同一IP连续的Web请求都会被分发到同一服务器进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其它服务器。
upstream nginxDemo {
ip_hash;
server 127.0.0.1:8081 weight=2; #服务器A
server 127.0.0.1:8082; #服务器B
}
基于weight的负载均衡和基于ip_hash的负载均衡可以组合在一起使用。