zoukankan      html  css  js  c++  java
  • nginx 动静分离

    背景

    其实企业信息化项目有几次用到nginx的,有的同事做了十几年了都没用过。也的确用不到。我也只是有个项目用到,当时不知道还能动静分离,的确是个好方案。用到nginx做负载,但是没用它做动静分离是有些浪费。

    转载

    在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 Nginx 并且在 B 上安装 Tomcat。配置 Nginx,当请求的是 html、jpg 等静态资源时,就访问 A 主机上的静态资源目录;当用户提出动态资源的请求时,则将请求转发到后端的 B 服务器上,交由 Tomcat 处理,再由 Nginx 将结果返回给请求端。 

    提到这,可能有您会有疑问,动态请求要先访问 A,A 转发访问 B,再由 B 返回结果给 A,A 最后又将结果返回给客户端,这是不是有点多余。初看的确多余,但是这样做至少有 2 点好处。第一,为负载均衡做准备,因为随着系统的发展壮大,只用一台 B 来处理动态请求显然是是不够的,要有 B1,B2 等等才行。那么基于图 2 的结构,就可以直接扩展 B1,B2,再修改 Nginx 的配置就可以实现 B1 和 B2 的负载均衡。第二,对于程序开发而言,这种结构的程序撰写和单台主机没有区别。我们假设只用一台 Tomcat 作为服务器,那么凡是静态资源,如图片、CSS 代码,就需要编写类似这样的访问代码:<img src=”{address of A}/a.jpg”>,当静态资源过多,需要扩展出其他的服务器来安放静态资源时,访问这些资源就可能要编写这样的代码:<img src=”{address of C}/a.jpg”>、<img src=”{address of D}/a.jpg”>。可以看到,当服务器进行变更或扩展时,代码也要随之做出修改,对于程序开发和维护来说非常困难。而基于上面的结构,程序都只 要 <img src=”a.jpg”>,无需关心具体放置资源的服务器地址,因为具体的地址 Nginx 为帮您绑定和选择。 

    动静分离的 Nginx 配置

     # 转发的服务器,upstream 为负载均衡做准备
     upstream tomcat_server{ 
            server 192.168.8.23:8099; 
     } 
        server {
            listen       80;
            server_name  localhost;

            #charset koi8-r;

            #access_log  logs/host.access.log  main;
           # 静态资源存放目录
            root  /im; 

            location / {
                root   html;
                index  ak47.html index.html index.htm;
            }
           # 动态请求的转发
            location ~ .*.jsp$ { 
                proxy_pass http://tomcat_server; 
                proxy_set_header Host $host; 
            } 
     # 静态请求直接读取
     location ~ .*.(gif|jpg|jpeg|png|bmp|swf|css)$ { 
              expires      30d; 
     }

  • 相关阅读:
    python json 和 pickle的补充 hashlib configparser logging
    go 流程语句 if goto for swich
    go array slice map make new操作
    go 基础
    块级元素 行内元素 空元素
    咽炎就医用药(慢性肥厚性咽炎)
    春季感冒是风寒还是风热(转的文章)
    秋季感冒 咳嗽 怎么选药
    解决IE浏览器“无法显示此网页”的问题
    常用的 css 样式 记录
  • 原文地址:https://www.cnblogs.com/sddychj/p/8821089.html
Copyright © 2011-2022 走看看