Nginx之动静分离

为什么要动静分离呢?

拿Nginx来说,Nginx是Web服务器,仅仅只能处理静态资源(例如js,img,css等等),而Tomcat属于应用服务器既能处理静态资源又能处理动态资源(例如jsp,freemarker,volocity等等)。但是Nginx处理静态资源的效率要高于Tomcat,而Tomcat处理静态资源的效率要低于Nginx很多,术业有专攻是也。由此,我相信大家明白了为什么要动静分离了。

如果还有不明白的,简单的说,web开发的本质就是HTTP请求,将成千上万的请求归类进行分发,谁谁处理这个,谁谁处理那个,取其优势,应用之。这样,毋庸置疑,效率肯定会上去的。

另外说下常用的应用服务器和web服务器?

常用的web服务器:Nginx、Apache等等。

常用的应用服务器:Tomcat、Jboss、Resin、WebLogic等等。

其实Apache也可以做动静分离,只不过我认为Nginx更简单。

关于Nginx的安装可以参考菜鸟教程:http://www.runoob.com/linux/nginx-install-setup.html

关于Nginx的学习和各个模块的含义可以参考这个网址:http://www.nginx.cn/doc/

关于负载均衡和集群均可以参考我的这两篇文章:

nginx反向代理和tomcat集群(适用于ubutnu16.04及其centos7)

nginx做负载均衡和tomcat简单集群

 

1.动静分离架构图

 

2.Nginx配置

主要修改nginx.conf配置文件

 upstream  yctech{
         server   192.168.126.128:8080;
    }


    server {
        listen       80;
        server_name  yctech;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
         root  /test;
        location / {
           proxy_pass http://yctech;
           root   html;
           index  index.html index.htm;
        }

        location ~ ^/yctech1/(.*){
                 proxy_set_header Host $host;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_pass http://yctech;    #转向tomcat处理

         }


         location ~ ^/yctech2/(.*){
                 proxy_set_header Host $host;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_pass http://yctech;    #转向tomcat处理

         }

        location ~ ^/yctech3/(.*){
                 proxy_set_header Host $host;
                 proxy_set_header X-Real-IP $remote_addr;
                    proxy_pass http://yctech; #转向tomcat处理                                                    

         }



        location ~ ^/yctech4/(.*){
                 proxy_set_header Host $host;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_pass http://yctech;    #转向tomcat处理

         }

         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
          expires      30d;
         }

 

 

root 对应的html是nginx的一个目录,这个目录下通常是官网的主页。

像root /test;

是因为html下有test目录,而test目录主要放置静态资源,同时也是处理静态资源。

 

3.编写index.jsp页面测试

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<img src="logo_small.png" width="500px" height="500px"/>
</body>
</html>

jsp页面中的logo_small.png其实是放在test目录下的。

 

4.重启Nginx

./sbin/nginx -s reload 并在浏览器上输入对应的地址,即可看到对应的效果。

参考思路博文为:https://www.cnblogs.com/xiaoblog/p/4241086.html

 

posted @ 2018-10-09 20:39  挑战者V  阅读(690)  评论(0编辑  收藏  举报