`

深入浅出Nginx之六【代理缓存与负载均衡】

阅读更多

在上一篇博客中简要介绍了Nginx和Tomcat的整合使用,然而还有一些历史遗留问题尚未提及尴尬。本篇博客将简要介绍Nginx的代理缓存,以及使用多台Tomcat服务器进行负载均衡。

 

<一>. 代理数据存放目录:吻

 proxy_temp_path  /software/proxy_temp;

     说明:代理临时目录,存在于http作用域,nginx用作代理时,用来存放和后端服务器进行交互的相关数据, 如前端用户的请求、后端服务器的响应,默认位置为nginx安装路径下面的/proxy_temp。

 proxy_cache_path  /software/proxy_cache levels=1:2 keys_zone=cache_web:16m inactive=1h max_size=512m;

    说明:代理缓存目录,存在于http作用域,nginx进行web缓存时,将静态资源缓存到nginx当前所在的机器。

  1. proxy_temp_path和proxy_cache_path必须指定为同一分区。

  2. 参数levels=1:2  指定缓存空间为二级hash目录,第一级为1个字符,第二级为2个字符,比如/7/c2。

  3. 参数keys_zone=cache_web:16m  用户存放key和元数据的缓存区间,命名为cache_web,16m大小。 

  4. 参数inactive=1h  如果资源在1h内未被请求,从缓存区中清除。

  5. 参数max_size=512m  指定本地缓存空间的大小,如果资源过于庞大时,按照LRU算法进行清除。

 

<二>. 定义服务器集群:大笑

 upstream blog_server_cluster {
     server  192.168.142.56:8080 weight=1 max_fails=2 fail_timeout=30s;
     server  192.168.142.78:8080 weight=2 max_fails=2 fail_timeout=30s;
     server  192.168.142.91:8080 weight=2 max_fails=2 fail_timeout=30s;
 }

     说明:存在于http作用域,同一组服务器相互之间进行负载的均衡。
  1. weight  指定各个服务器的权重,默认为1,权重越大处理的负载越多。
  2. max_fails  指定失败请求次数,大于该次数时,nginx认为该服务器处于不可用状态。
  3. fail_timeout  失败请求时间,大于该时间,nginx认为本次请求失败。

 

<三>. 设置web缓存:微笑

 proxy_cache  cache_web;
 proxy_cache_key  $host$uri$is_args$query_string;

 proxy_cache_valid  200 304 1d;
 proxy_cache_valid  301 302 1m;
 proxy_cache_valid  any 1m;

     说明:web缓存,存在于location作用域,将后端服务器的静态资源缓存到nginx所在的本地机器。
  1. proxy_cache  指定为上述定义的缓存区域。
  2. proxy_cache_key  指定缓存所使用的key的组合字符串,然后用md5进行加密。
     $host  主机名,如www.excelsoft.com
     $uri  请求的项目内部路径,如/user/list.jsp。
     $is_args  如果有请求参数则为?符号,否则为空字符串""。
     $query_string  请求参数字符串。
  3. proxy_cache_valid  对不同状态码的URL设置不同的缓存时间(1d/1h/1m)。

 

<四>. http状态码:status code酷

  1. 2xx:success
     200  请求成功 [Ok]
  2. 3xx:redirect 
     301  请求的资源被移除到新的位置,新的URI将在响应的Location字段中返回  [Moved Permanently]
     302  请求的资源临时从不同的URI进行响应  [Found]
     304  重复的请求,该响应不包含消息体   [Not Modified]
  3. 4xx:request error
     404  请求的资源未能在服务器上找到  [Not Found]
     403  找到请求的资源,但是无权限访问  [Forbidden]
  4. 5xx:server error
     500  程序出错,服务器无法处理  [Internal Server Error]
     502  错误网关,内部网络连接设置不正确,或者当前服务器待处理的连接过多,以至于连接超时  [Bad Gateway]

 

     到目前为止,已经比较全面的介绍了Nginx用作反向代理和负载均衡的诸多知识,为了能从整体上对配置文件有一个清楚地把握,下面给出nginx.conf文件的详尽内容眨眼,具体细节可参见之前的几篇博客:

 

user  nick excelsoft;

worker_processes  2;

error_log  /opt/nginx/logs/error.log notice;

pid  /opt/nginx/logs/nginx.pid;

worker_rlimit_nofile  65535;

events {
    use  epoll;
    worker_connections  65535;
}


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

    charset  utf-8;

    log_format  access '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for" '
                       '"$sent_http_content_type" "$request_time"'; 

    access_log  /opt/nginx/logs/access.log access;

    sendfile  on;
    tcp_nopush  on;
    tcp_nodelay  on;
    keepalive_timeout  65;
    
    gzip  on;
    gzip_min_length  1k;
    gzip_buffers  8 32k;
    gzip_http_version  1.1;
    gzip_comp_level  3;
    gzip_types  text/plain text/css text/javascript application/x-javascript application/xml;
    gzip_vary  on;

    server_names_hash_bucket_size  128;
    client_header_buffer_size  32k;
    large_client_header_buffers  4 32k;
    client_max_body_size  100m;
    client_body_buffer_size  128k;

    proxy_connect_timeout  90;
    proxy_read_timeout  90;
    proxy_send_timeout  90;

    proxy_buffer_size  16k;
    proxy_buffers  4 32k;
    proxy_busy_buffers_size  64k;
    proxy_temp_file_write_size  128k;

    proxy_temp_path  /software/proxy_temp;
    proxy_cache_path  /software/proxy_cache levels=1:2 keys_zone=cache_web:16m inactive=1h max_size=512m;

    upstream blog_server_cluster {
        server  192.168.142.56:8080 weight=1 max_fails=2 fail_timeout=30s;
        server  192.168.142.78:8080 weight=2 max_fails=2 fail_timeout=30s;
        server  192.168.142.91:8080 weight=2 max_fails=2 fail_timeout=30s;
    }

    server {
        listen       80;
        server_name  www.excelsoft.com;

        location / {
            proxy_pass  http://blog_server_cluster;

            proxy_set_header Host $host;
    	    proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            index  index.html index.htm index.jsp index.do;
            access_log  /opt/nginx/logs/access.excelsoft.log access;
        }

        location ~* \.(gif|jpg|jpeg|png|bmp|swf)$ {
            proxy_pass  http://blog_server_cluster;
           
            proxy_cache  cache_web;
            proxy_cache_key  $host$uri$is_args$query_string;

            proxy_cache_valid  200 304 1d;
            proxy_cache_valid  301 302 1m;
            proxy_cache_valid  any 1m; 

            expires  15d;
            access_log  off;
        }

        location ~ \.(js|css)$ {
            proxy_pass  http://blog_server_cluster;

            proxy_cache  cache_web;
            proxy_cache_key  $host$uri$is_args$query_string;

            proxy_cache_valid  200 304 1d;
            proxy_cache_valid  301 302 1m;
            proxy_cache_valid  any 1m;

            expires  1h;
            access_log  off;
        }
    }

    server {
        listen       80;
        server_name  static.excelsoft.com;

        root  /software/static;
        access_log  off;

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

        location ~ \.(js|css)$ {
            expires  1h;
        }
    }
}

 

     关于nginx的常用配置,还有一些未尽事宜大笑,在最后的一篇博客将进行详尽的讲解。 

分享到:
评论

相关推荐

    深入浅出Nginx之二【基本配置】

    《深入浅出Nginx之二【基本配置】》这篇博文主要探讨了Nginx的基础配置,涵盖了Nginx作为一款高性能的Web服务器和反向代理服务器如何进行配置以满足不同场景的需求。以下是对该文内容的详细解读: 1. **Nginx简介**...

    深入理解nginx模块开发与架构解析(第二版)

    总之,《深入理解nginx模块开发与架构解析(第二版)》是一本深入浅出的Nginx技术专著,无论你是初学者还是经验丰富的开发者,都能从中获益,提升自己的Nginx技能。配合书中的高清PDF文档,你可以更直观地学习和查阅...

    跟我学Nginx+Lua开发_nginxlua原理_nginx_

    总结,《跟我学Nginx+Lua开发》这本书深入浅出地讲解了如何利用Nginx与Lua进行Web服务开发,无论你是运维人员、开发人员还是架构师,都能从中学习到实用的技能,提升你的Web服务开发水平。通过阅读本书,你可以掌握...

    《实战nginx》电子版

    本书通过丰富的案例分析,深入浅出地介绍了Nginx的各种模块,旨在提升读者在实际工作中的配置和优化能力。 Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于网站的负载均衡、静态文件处理、SSL终止等场景。其...

    精通Nginx(第二版) PDF 非扫描件

    总之,这本书深入浅出地介绍了Nginx的各个方面,无论你是初学者还是经验丰富的系统管理员,都能从中受益,掌握Nginx的高级配置技巧,提升你的IT技能。通过学习这本书,你将能够充分利用Nginx来构建高效、稳定、安全...

    nginx cookbook-en

    通过对负载均衡、内容缓存、Web服务器安全控制及监控管理等方面进行深入浅出的讲解,本书为读者提供了丰富的实践经验和技巧。无论是对于新手还是经验丰富的开发者而言,这本书都具有极高的参考价值。

    nginx 中文

    《第7章 Nginx的Rewrite规则与实例》深入浅出地讲解了Nginx的URL重写功能。通过学习,用户可以理解正则表达式在Nginx中的应用,掌握如何制定和调试Rewrite规则,实现URL美化、路径重定向等功能。 《第11章 Nginx的...

    Nginx 应用技术指南 pdf 高清

    Nginx是目前广泛使用的高性能HTTP和反向代理服务器,它同时也是一个IMAP/POP3/SMTP代理服务器。...整体而言,这份技术指南对Nginx的应用技术作了深入浅出的介绍和详细的实例演示,是学习Nginx的一个不可多得的资源。

    誉天邹-Nginx网站架构1-5

    誉天邹的《Nginx网站架构1-5》系列课程深入浅出地介绍了Nginx在网络架构中的关键作用及其配置优化技巧。通过对Nginx的学习和实践,不仅可以提升个人的技术能力,还能帮助企业构建更加稳定高效的网站系统。随着互联网...

    海量图片的分布式存储及负载均衡研究(浅析)

    本文将围绕“海量图片的分布式存储及负载均衡研究”这一主题,结合源码和工具,深入浅出地探讨相关知识点。 分布式存储是解决大数据问题的关键技术之一。它通过将数据分散存储在多个节点上,实现了高可用性、容错性...

    python基础教程第三版+精通nginx第二版

    这本书深入浅出地介绍了变量、数据类型、控制流、函数、模块、异常处理、面向对象编程等核心概念,同时也涉及了标准库的使用和文件操作。对于想要在Python编程领域打下坚实基础的读者来说,这是一个很好的起点。 在...

    nginx 如何取代 apache 一书

    综上所述,《Nginx如何取代Apache》这本书深入浅出地介绍了如何利用Nginx的强大功能,替换Apache来提升Web服务器的性能和稳定性。通过理解两者的工作原理、核心特性,以及迁移和配置的步骤,读者可以成功地将网站从...

    《精通Nginx 二版》高清、内容可复制、带目录标签

    4. **反向代理与负载均衡**:Nginx强大的反向代理功能使得它可以将请求分发到不同的后端服务器,实现负载均衡。书中会介绍如何配置负载均衡策略,如轮询、权重分配等。 5. **SSL/TLS安全设置**:在当前网络安全环境...

    nginx从入门到精通

    《Nginx从入门到精通》是一本深入浅出、全面介绍Nginx服务器的教程。Nginx是一款高性能的HTTP和反向代理服务器,也是邮件传输代理服务器,以其轻量级、高并发处理能力而备受青睐。这本书旨在帮助读者快速掌握Nginx的...

    实战Nginx:取代Apache的高性能Web服务器

    《实战Nginx:取代Apache的高性能Web服务器》这本书提供了深入浅出的讲解,帮助读者理解Nginx的工作原理以及如何将其应用于实际项目中。无论是对于初学者还是有一定经验的技术人员来说,都是一本不可多得的好书。...

    ngnix.rar_ngnix学习视频_ngnix视频_ngnix视频教程_怎样学习ngnix

    【Nginx简介】 Nginx(发音为 "engine-x")是一款高性能...教程会深入浅出地讲解每个知识点,确保即使是没有经验的新手也能轻松上手。在实践中不断探索和学习,你将能够灵活运用Nginx来构建高效、稳定的Web服务环境。

    Nginx Cookbook

    虽然本书的具体内容未能详细展示,但是从书名和作者的背景可以推测,本书将覆盖Nginx的安装与配置、静态内容的分发、动态请求的处理、高级负载均衡技术、缓存机制的设置、安全策略的实施、监控与日志管理以及与后端...

    燕十八老师PHP视频教程10K月薪高性能架构班

    本教程深入浅出地讲解了如何通过Linux集群、MySQL优化、Nginx高并发处理以及lvs负载均衡等核心技能,实现大型网站的优化,从而提升系统的稳定性和效率,让开发者具备10K月薪以上的专业能力。 1. **Linux集群**:...

    大型网站技术架构_核心原理与案例分析_李智慧

    《大型网站技术架构_核心原理与案例分析_李智慧》这本书深入浅出地探讨了互联网行业中大型网站在设计、建设和优化过程中所面临的关键问题及解决方案。以下是对书中的主要知识点的详细解读: 一、网站架构概述 大型...

    Nginx企业开发视频教程(讲义+答疑)

    本"Nginx企业开发视频教程"旨在通过深入浅出的方式,帮助学员掌握Nginx的核心技术和在实际企业环境中的应用。 教程内容可能涵盖以下几个关键知识点: 1. **Nginx基础配置**:学习如何安装Nginx,并理解其基本配置...

Global site tag (gtag.js) - Google Analytics