zoukankan      html  css  js  c++  java
  • 6. Nginx静态代理与动静分离

    一 .Nginx静态代理

    把所有静态资源的访问改为访问nginx,而不是访问tomcat,因为nginx更擅长于静态资源的处理,性能更好,效率更高。

    所以在实际应用中,我们将静态资源比如图片,css,html,js等交给nginx处理,而不是由tomcat处理;

    1.Nginx静态代理如何实现?

    答:通过在Nginx的nginx.conf文件进行配置即可实现

    方式一:(根据静态资源的格式/基于后缀名进行拦截)

    通过在nginx.conf配置文件中添加静态资源的location,比如:

    当访问静态资源的时候,从linux服务器/opt/static目录下获取(举例)

    location ~ .*.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {

      root /opt/static;

    }

    以下案列根据.png后缀匹配

    案列配置:

      
    http {
      include       mime.types;
      default_type application/octet-stream;

      #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 logs/access.log main;

      sendfile       on;
      #tcp_nopush     on;

      #keepalive_timeout 0;
      keepalive_timeout 65;

      #gzip on;
      upstream www.myweb.com{
          ip_hash;
          server 127.0.0.1:9100;
          server 127.0.0.1:9200;
      }


      server {
          listen       80;
          server_name localhost;

          #charset koi8-r;

          #access_log logs/host.access.log main;

          location ~ .*.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
                  root /opt/static;
          }

          location / {
              root   html;
              index index.html index.htm;
          }

          location /heal{
              root /opt/static/;
              index index.html index.htm;
          }

          location /myweb{
              proxy_pass http://www.myweb.com;

          }

    访问nginx:http://192.168.95.8/myweb/

    此时这个资源是由两个部分构成的,页面部分是tomcat返回的,图片是nginx返回的。

    效果:

    图片位置:

    注意:放置静态资源的目录,要注意目录权限,如果权限不足,要给目录赋予权限;

    关于location后面的字符串1、~ 表示正则匹配,也就是说后面的内容可以是正则表达式匹配;2、第一个点 . 表示任意字符;3、* 表示一个或多个字符;(.*表示一个或多个任意字符,这里匹配文件名)4、. 是转移字符,是后面这个点的转移字符;5、| 表示或者6、$ 表示结尾整个配置表示以 .后面括号里面的这些后缀结尾的文件都由nginx处理;

    方式二:通过在nginx.conf配置文件中配置静态资源所在的目录实现,比如:

    (根据静态资源所在的路径目录进行拦截)

    location ~ .*/(css|js|img|images) {     

      root   /opt/static;

    }

    xxx/css xxx/js xxx/img xxx/images

    以下案列更具images这个目录匹配:

    nginx.conf文件配置:

      
    http {
      include       mime.types;
      default_type application/octet-stream;

      #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 logs/access.log main;

      sendfile       on;
      #tcp_nopush     on;

      #keepalive_timeout 0;
      keepalive_timeout 65;

      #gzip on;
      upstream www.myweb.com{
          ip_hash;
          server 127.0.0.1:9100;
          server 127.0.0.1:9200;
      }

      server {
          listen       80;
          server_name localhost;

          #charset koi8-r;

          #access_log logs/host.access.log main;

          #location ~ .*.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
          #       root /opt/static;
          #}

          location ~ .*/(css|js|img|images) {
                  root /opt/static;
          }

          location / {
              root   html;
              index index.html index.htm;
          }

          location /heal{
              root /opt/static/;
              index index.html index.htm;
          }

    图片位置:

    http://192.168.95.8/myweb/images/60x60.png

    效果:

    二.动静分离

    我们将静态资源放入/opt/static目录下,然后用户访问时由nginx返回这些静态资源;

    Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景;

    动态资源:如jsp有tomcat或者其他服务器完成;

    静态资源:如图片,css,js等由nginx服务器完成;

    他们各司其职,专注做自己擅长的事情;动静分离充分利用了他们各自的优势,从而达到更高效合理的架构;

    2.1 动静分离示列:

    Nginx在一台Linux上安装一份,可以启动多个nginx,每个Nginx配置文件不一样即可:

      
    cp nginx.conf nginx81.conf

    cp nginx.conf nginx82.conf

    2.2 vi nginx81.conf:删除多余的配置,端口设置为81

     

    2.3 vi nginx82.conf:删除多余的配置,端口设置为82

    2.4 vi nginx.conf(80端口):

      
    upstream static.myweb.com{
          server 127.0.0.1:81;
          server 127.0.0.1:82;
      }

    server {
      listen       80;
      server_name localhost;

      #charset koi8-r;

      #access_log logs/host.access.log main;

      #location ~ .*.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
      #       root /opt/static;
      #}

      location ~ .*/(css|js|img|images) {
              proxy_pass http://static.myweb.com;
      }

    负载均衡Nginx配置:

    静态代理Nginx配置:

     

     列续:

    (1)依次启动Nginx的配置文件

    [root@localhost conf]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    [root@localhost conf]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx81.conf
    [root@localhost conf]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx82.conf

    (2)查看启动是否ok

    ps -aef |grep nginx

     (3)图片放置目录

    /opt/static/myweb/images/60x60.png

      (4)通过Nginx负载均衡访问静态资源

    http://192.168.95.8/myweb/images/60x60.png

     

  • 相关阅读:
    8*8LED点阵
    红外收发基础
    MQTT服务器(Win)
    安卓图片显示与网络访问
    Liunx C 编程之多线程与Socket
    JAVA开始(基础篇)
    C语言数据类型及变量整理
    EOS基础全家桶(十五)智能合约进阶2
    EOS基础全家桶(十四)智能合约进阶
    EOS基础全家桶(十三)智能合约基础
  • 原文地址:https://www.cnblogs.com/KdeS/p/12762455.html
Copyright © 2011-2022 走看看