windows下配置安装nginx及实现动静分离与负载均衡

一些细节我就整合了其他人的资源

windows下配置安装nginx及使用

一、安装

1.1 从nginx官网下载相应的安装包:http://nginx.org/ 

 

1.2 建议下载  下载稳定版

 

1.3 解压到相应的目录,比如我是e盘 然后修改目录名字为nginx

 

1.4 双击启动Ngnix,一闪而过,此时想要确定是否启动成功,可以直接打开任务管理器查看:

 

1.5 此时 直接在浏览器地址栏输入http:localhost 便能看到 欢迎页面,说明你虚拟主机已经搭建好了

 

1.6 但是有时候 我们需要配置项目的根路径   在默认情况下 他的root是 nginx目录下的html文件夹

 

1.7 如若修改 则打开conf目录下的nginx.conf。

       找到server选项 修改location 中的root 选项。

 

比如我修改到D:/webroot

 

解压包里只有启动nginx服务器运行程序,但是如果要重启,或者停止服务都必须在dos命令下手动重启或停止,比较麻烦,我用批处理写了重启和停止命令:如下

stop.bat

 

restart.bat

 

如图:

、Nginx整合Tomcat实现动静分离

为什么要做动静分离

  • 动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署
  • 动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则使对静态资源的请求全部交给nginx处理,而讲动态请求转发给应用服务器处理,达到动静分离的目标,从而提高网站的并发性能,达到优化网站架构的效果

三、Tomcat集群横向拓展 + Nginx负载均衡

概况

  • 搭建Tomcat集群,通过横向拓展解决单服务器上限瓶颈
  • Nginx处理静态资源,Tomcat处理接口请求,动静分离
  • Nginx实现负载均衡,均衡Tomcat服务的并发压力

 

下面我们将使用一台Nginx+一台Tomcat模拟实现动静分离,项目将使用博主之前构建的项目并做部分修改

修改Web项目

修改项目下的index.html,添加img标签和js引入,修改后的代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>欢迎进入枣面包的面包坊</title>
    <script type="text/javascript" src="js/nothing.js"></script>
</head>
<body>
    <h1>欢迎进入枣面包的面包坊</h1>
    <img src="img/photo.jpg">
</body>
</html>

项目添加photo.jpg和nothing.js文件

将项目打包部署到之前搭建的Tomcat服务器中并启动,通过浏览器访问: 

可以看到访问返回了3样东西:

  • 访问接口通过模板渲染之后得到的文档:document
  • 获得JavaScript标签引入的js文件:script——nothing.js
  • 获得img标签请求得到的静态图片:jpeg——photo.jpg

配置nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        #配置静态资源交给nginx处理,这里先只配置js和jpg
        location ~ .*\.(js|jpg) {
            root /export/data/nginx/appdemo; #静态文件目录
            expires 30d; #缓存天数
        }
        #配置除静态资源以外的交给tomcat处理
        location / {
            proxy_pass http://localhost:8080/appdemo-0.0.1-SNAPSHOT/;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

重启Nginx服务

web访问Nginx服务:192.168.214.150,情况如下:

发现访问nginx时,即变成了访问tomcat服务,这里就是用nginx进行了反向代理;但是也发现了获取不到nothing.js和photo.jpg文件,那是因为nginx配置了静态资源的路径,而该路径下没有该资源导致的,将对应资源上传到指定位置即可,在nginx.conf文件中的配置的静态资源路径为:/export/data/nginx/appdemo

将图片和js放在Nginx配置文件的目录后再访问:

总结

到这里就实现了Nginx和Tomcat的集成,实现了web服务的动静分离,将静态资源交给Nginx处理,这里是将静态资源存储在本地,通过Nginx访问,当然也可以代理到其他静态服务器上;再将非静态资源的请求代理给Tomcat动态处理。这样即削减了Tomcat的压力,又发挥了Nginx高并发的能力,使web服务更加健壮。但是这里只是配置了单台Tomcat,当动态请求过多时,一台Tomcat服务器肯定是不足以处理足够多的动态请求的。后面将搭建Tomcat集群,通过横向拓展实现Tomcat的高并发。

三、Tomcat集群横向拓展 + Nginx负载均衡

概况

  • 搭建Tomcat集群,通过横向拓展解决单服务器上限瓶颈
  • Nginx处理静态资源,Tomcat处理接口请求,动静分离
  • Nginx实现负载均衡,均衡Tomcat服务的并发压力

搭建Tomcat集群

1.部署架构

  • 192.168.214.150:centos6-1 —— Tomcat1
  • 192.168.214.151:centos6-2 —— Tomcat2
  • 192.168.214.152:centos6-3 —— Tomcat3

 

启动Tomcat集群

分别启动centos6-1、centos6-2、centos6-3的Tomcat

启动Tomcat1

启动Tomcat2

启动Tomcat3

 

浏览器分别访问三节点Tomcat

可以看到3台服务器上的Tomcat都可以访问,同时在访问我们的项目的时候,都在页面显示出了Tomcat所在服务器本地的主机名和ip;这个就是同一个项目部署到集群的不同服务器中为用户提供服务;但是到目前为止,这三台服务器还是通过不同的访问地址才能访问得到,而我们需要得到的效果是访问同一地址,3台Tomcat都同时为用户提供服务,这里就需要我们的Nginx来做反向代理,实现Tomcat集群的负载均衡

 

配置Nginx反向代理

 

修改nginx.conf文件如下:

 

worker_processes  1;

 

events {

    worker_connections  1024;

}

 

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

 

    #动态服务器组

    upstream zaomianbao.com {

        server 192.168.214.150:8080;

        server 192.168.214.151:8080;

        server 192.168.214.152:8080;

    }

    server {

        listen       80;

        server_name  localhost;

 

        #配置静态资源交给nginx处理,这里先只配置js和jpg

        location ~ .*\.(js|jpg) {

            root /export/data/nginx; #静态文件目录

            expires 30d; #缓存天数

        }

        #配置除静态资源以外的交给tomcat处理

        location / {

            proxy_pass http://zaomianbao.com;

        }

 

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

 

重启Nginx

浏览器访问Nginx

连续访问三次出现三种不同的结果

发现3次访问同一个地址,但返回的内容却又差别,因为分别是3台不同的Tomcat处理动态的接口请求并返回html文档内容,而文档内容中动态渲染了Tomcat所在主机的主机名和ip,所以我们看到了不同的内容;而静态资源只在Nginx所在的centos6-1服务器上部署了一份。到这里就充分看到了Nginx集成Tomcat实现动静分离的好处以及Nginx对Tomcat横向拓展的负载均衡的技术支持。

容错机制

我们将Tomcat3宕掉

再访问Nginx,发现不影响应用的使用,只是请求分发时不再分配到已经宕机的Tomcat3上了,这里就是Nginx的upstream所实现的容错机制,这样就可以实现web服务的7*24小时不间断服务。

 

总结

以上架构足以解决大中型网站的高并发访问。Nginx反向代理,Tomcat横向拓展集群,Nginx处理静态内容,Tomcat处理动态接口请求,Nginx负责动态请求的负载均衡分配,Nginx容错机制实现高可用。随着集群的搭建,带来了显而易见的好处就是网站的并发能力大大提升,但是集群的产生也带来了一些难题,例如会话的问题

发布了5 篇原创文章 · 获赞 4 · 访问量 177

猜你喜欢

转载自blog.csdn.net/zhuxiang997/article/details/103557186
今日推荐