`

nginx学习笔记

 
阅读更多

一、什么是nginx?

 

Nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器。
 
Nginx 已经在俄罗斯最大的门户网站── RamblerMedia(www.rambler.ru)上运行了4年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。
 
在国内,已经有新浪博客、新浪播客、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、YUPOO相册、豆瓣、迅雷看看等多家网站、频道使用Nginx 服务器。
 
二、nginx优点
 
1、高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。
 
2、内存消耗少:在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。
 
3、配置文件非常简单:风格跟程序一样通俗易懂。
 
4、成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
 
5、支持Rewrite重写规则:能够根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。
 
6、内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
 
7、节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
 
8、稳定性高:用于反向代理,宕机的概率微乎其微。
 
三、nginx的应用类别

1、使用 Nginx 结合FastCGI运行 PHP、JSP 、Perl等程序

2、使用 Nginx 作反向代理、负载均衡、规则过滤

3、使用 Nginx 运行静态HTML页、图片

4、Nginx与其他新技术的结合应用

四、简单的负载均衡配置

 

 

  ……

  upstream bbs_server_pool {

  server 192.168.1.15:80 weight=1 max_fails=2 fail_timeout=30s;

  server 192.168.1.16:80 weight=1 max_fails=2 fail_timeout=30s;

  server 192.168.1.17:80 weight=1 max_fails=2 fail_timeout=30s;

  server 192.168.1.18:80 weight=1 max_fails=2 fail_timeout=30s;

  }

  ……

  在nginx.conf配置文件中,用upstream指令定义一组反向代理/负载均衡后端服务器池。

  ……

  server{

  listen 80;

  server_name bbs.yourdomain.com *.bbs.yourdomain.com;

  location /

  {

  proxy_pass http://bbs_server_pool;

  proxy_set_header Host $host;

  proxy_set_header X-Forwarded-For $remote_addr;

  }

  access_log off;

  }

  ……

 

  proxy_pass http://bbs_server_pool; 用于指定反向代理的服务器池。

  proxy_set_header Host $host; 当后端Web服务器上也配置有多个虚拟主机时,需要用该Header来区分反向代理哪个主机名。

  proxy_set_header X-Forwarded-For $remote_addr; 如果后端Web服务器上的程序需要获取用户IP,请从该Header头获取。

五、nginx缓存

 

  •Nginx从0.7.48版本开始,支持了类似Squid的缓存功能;

  •缓存把URL及相关组合当作Key,用md5编码哈希后保存;

  •Nginx的Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除指定缓存页面;

  •采用MMAP实现,设置的缓存区大小不能超过物理内存+SWAP的值。

  ……

  #设置Web缓存区名称为cache_one,缓存空间大小为2000MB,1天清理一次缓存,单个文件超过5m不缓存。

  proxy_cache_path /data0/proxy_cache_path levels=1:2 keys_zone=cache_one:2000m inactive=1d max_size=5m;

  #注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区

  proxy_temp_path /data0/proxy_temp_path;

  upstream my_server_pool {

  server 192.168.1.2:80 weight=1 max_fails=2 fail_timeout=30s;

  server 192.168.1.3:80 weight=1 max_fails=2 fail_timeout=30s;

  }

  ……

  server

  {

  listen 80;

  server_name my.domain.com;

  location /

  {

  proxy_set_header Host $host;

  proxy_set_header X-Forwarded-For $remote_addr;

  proxy_pass http://my_server_pool;

  }

  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$

  {

  #对图片、JS、CSS进行缓存,使用Web缓存区cache_one

  proxy_cache cache_one;

  #对不同HTTP状态码缓存设置不同的缓存时间

  proxy_cache_valid 200 10m;

  proxy_cache_valid 304 3m;

  proxy_cache_valid 301 302 1h;

  proxy_cache_valid any 1m;

  #设置Web缓存的Key值,Nginx根据Key值md5哈希存储缓存,这里根据“域名、URI、客户端请求Header头中的If-Modified-Since信息”组合成Key。

  proxy_cache_key $host$request_uri$http_if_modified_since;

  #反向代理,访问后端内容源服务器

  proxy_set_header Host $host;

  proxy_set_header X-Forwarded-For $remote_addr;

  proxy_pass http://my_server_pool;

  }

  access_log off;

  }

优点:

  •对于修改实时性要求不高的图片、Flash、CSS样式文件、JavaScript文件,可以在Nginx反向代理(负载均衡)服务器上设置缓存,不用每次请求都转发到后端Web服务器,

加快了响应速度。

  •减少了Nginx与后端Web服务器的连接数,提高了Nginx处理性能。

 



分享到:
评论

相关推荐

    nginx学习笔记(软件+学习笔记)

    nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) ...

    Nginx学习笔记

    【Nginx学习笔记】 Nginx是一款由俄罗斯开发者Igor Sysoev设计的高性能、高并发的Web服务器和反向代理服务器。最初应用于俄罗斯知名网站www.rambler.ru,随后开源,采用类BSD许可,使得全球用户都能使用。Nginx以其...

    nginx学习笔记.zip

    **Nginx学习笔记概述** Nginx是一款高性能的HTTP和反向代理服务器,也是一款邮件代理服务器。它以其稳定性、高性能以及丰富的模块配置而受到广泛赞誉,常用于网站的负载均衡、静态文件处理和SSL加密等场景。本学习...

    Nginx学习笔记.zip

    这个“Nginx学习笔记.zip”压缩包文件包含了一系列关于Nginx的教程资源,分别命名为“第1节课”到“第5节课”,暗示着一个逐步深入的学习过程。 在第一节课中,我们通常会了解Nginx的基本概念和安装步骤。Nginx的...

    5Nginx学习笔记1

    Nginx学习笔记1 Nginx是当前使用最广泛的Web服务器之一,它提供了强大的服务器功能和灵活的配置方式。本文档将介绍Nginx的基本概念、安装过程、配置方法和常见问题解决方案。 一、Nginx的基本概念 Nginx是一个...

    nginx学习笔记.docx

    ### Nginx 学习笔记知识点总结 #### 一、Nginx 简介及安装 **Nginx** 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强,...

    nginx学习笔记及相关资料

    "nginx学习笔记及相关资料"这个压缩包中可能包含了关于Nginx的配置示例、教程文档、实战案例等,帮助学习者深入理解Nginx的工作原理,掌握配置和管理技巧,提升解决实际问题的能力。 总之,Nginx是一个强大且灵活的...

    nginx 学习笔记实用知识库分享知识分享

    "nginx 学习笔记实用知识库分享知识分享" 以下是从给定的文件中生成的相关知识点: Nginx 介绍 Nginx 是一个自由的、开源的、高性能的 HTTP 服务器和反向代理服务器,使用 C 语言编写,提供了高性能、可靠性和可...

    《Nginx学习笔记系列》.pdf

    《Nginx学习笔记系列》.pdf

    Nginx学习笔记.md

    这是我自学nginx的学习笔记,上传只是为了更好的督促自己学习,如果你也有同感,加入一起学习吧。

    nginx学习笔记1

    安装 和使用安装常用命令配置文件nginx.conf配置文件三部分组成:全局块,event块,http块全局块:从配置文件开始到events块之间的内容,主要设

    我的学习笔记Nginx

    Nginx学习笔记

    Nginx学习笔记之事件驱动框架处理流程

    Nginx对请求的处理是通过事件触发的,模块作为事件消费者,只能被事件收集、分发器调用。在Nginx中,接收到一个请求时,不会产生一个单独的进程来处理该请求,而是由事件收集、分发器(进程)调用某个模块,由模块处理...

    Ngnix学习笔记(全网最新)

    《Nginx学习笔记(全网最新)》是你掌握这一强大工具的最佳指南。无论你是初学者还是有经验的开发者,这本学习笔记将带你深入探索Nginx的核心功能和高级特性,帮助你快速上手并优化你的Web应用。 在这里,你将学到...

    Nginx完整学习笔记.doc

    Nginx完整学习笔记 Nginx 是一个功能强大、灵活、可扩展的 Web 服务器,以下是关于 Nginx 的详细知识点: 安装与部署 Nginx 依赖于 pcre 库,因此在安装 Nginx 之前需要先安装 pcre 库。使用 yum 安装 pcre 和 ...

    《nginx源码学习笔记》.pdf

    《nginx源码学习笔记》.pdf

Global site tag (gtag.js) - Google Analytics