个人整理资料,转帖注明出处,谢谢~
== Nginx介绍和安装 ==
Nginx是一个自由、开源、高性能及轻量级的HTTP服务器及反转代理服务器,
其性能与IMAP/POP3代理服务器相当。Nginx以其高性能、稳定、功能丰富、配置简单及占用系统资源少而著称。
Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多.
*基础功能
处理静态文件,索引文件以及自动索引;
反向代理加速(无缓存),简单的负载均衡和容错;
FastCGI,简单的负载均衡和容错;
模块化的结构。过滤器包括gzipping, byte ranges, chunked responses, 以及 SSI-filter 。在SSI过滤器中,到同一个 proxy 或者 FastCGI 的多个子请求并发处理;
SSL 和 TLS SNI 支持;
*优势
Nginx专为性能优化而开发,性能是其最重要的考量, 实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验, 有报告表明能支持高达 50,000 个并发连接数。
Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理服务器对外进行服务。
Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。
例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。
nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,就稳定性而言, nginx比lighthttpd更胜一筹。
Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。
Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
*nginx的安装
开发稳定版: Nginx 0.8.X
当前稳定版: Nginx 0.7.X
历史稳定版: Nginx 0.6.X
== 一个简单的配置文件 ==
== 模块介绍 ==
模块划分:
#Core 核心模块
#Events 事件模块
#HTTP HTTP模块
#Mail 邮件模块
*核心模块的常用组件
*事件模块的常用组件
*HTTP模块的核心组件和变量
*邮件模块的常用组件(略)
== 常用场景配置 ==
1.多台服务器配置负载均衡
ip_hash; nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session
1.down 表示单前的 server 暂时不参与负载
2.weight 默认为 1.weight 越大,负载的权重就越大。
3.backup: 其它所有的非 backup 机器 down 或者忙的时候,请求 backup机器。所以这台机器压力会最轻。
2.通过手机客户端的头信息或者请求的参数转发到不用目录
1、正则表达式匹配,其中:
= 完全相等;
~为区分大小写匹配;
~*为不区分大小写匹配;
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配。
2、文件及目录匹配,其中:
-f和!-f用来判断是否存在文件;
-d和!-d用来判断是否存在目录;
-e和!-e用来判断是否存在文件或目录;
-x和!-x用来判断文件是否可执行。
if (-d $request_filename){ ... }
哪些地方会出现正则表达式:
1.location ~* \.(gif|jpg|png|swf|flv)${...}
2.rewrite ^(.*)$ /nginx-ie/$1 break;
正则表达式举例:
1.多目录转成参数 abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2
if ($host ~* (.*)\.domain\.com) {
set $sub_name $1;
rewrite ^/sort\/(\d+)\/?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
}
2.目录对换 /123456/xxxx -> /xxxx?id=123456
rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;
3.防盗链
4.访问控制:身份验证、限制IP
cp /usr/local/apache/apache8001/bin/htpasswd /usr/local/bin/
/usr/local/bin/htpasswd -c htpasswd root
5.查看Nginx的运行状态
== 进阶内容 ==
1.查看Nginx的运行状态
Active connections: 364
server accepts handled requests
5477919 5477919 17515830
Reading: 10 Writing: 26 Waiting: 328
意思如下:
active connections – 当前 Nginx 正处理的活动连接数。
serveraccepts handled requests -- 总共处理了 5477919 个连接 , 成功创建 5477919 次握手 (证明中间没有失败的 ), 总共处理了 17515830 个请求 ( 平均每次握手处理了 3.2 个数据请求 )。
reading -- nginx 读取到客户端的 Header 信息数。
writing -- nginx 返回给客户端的 Header 信息数。
waiting -- 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
2.案例分析:
将web server由apache换为nginx后,却带来意想不到的问题.多个页面显示模块显示"正在加载中..."然后一直停顿,使用FireBug调试前端,XSL文件解析失败.但载入又是HTTP 200 的正常状态.
继续用FireBug调试,发现XSL文件下载时的HTTP响应头中,
Content-Type是oct/stream ,而在原来的apache中,是text/xml,于是修改/etc/nginx/mime.types文件.将XSL的扩展名加到xml组中.问题解决.
3. 通过系统的信号控制 Nginx
使用信号加载新的配置
平滑升级到新的二进制代码
4. 使用Nginx限制下载速率和并发数
limit_zone limit_conn limit_rate
5. 使用Nginx进行地址转发
rewrite
nginx rewrite中last和break的区别: http://blog.sina.com.cn/s/blog_4b01279a0100hd4c.html
6.Nginx Internals: Nginx源代码、内部机制的分析
http://blog.zhuzhaoyuan.com/2009/09/nginx-internals-slides-video/
== 参考资料 ==
Nginx中文文档:
http://wiki.nginx.org/NginxChs
服务器系统架构分析日志:
http://www.sudone.com/
使用 Nginx 提升网站访问速度:
http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/
分享到:
相关推荐
这本书涵盖了从基础配置到高级应用的全面知识,旨在帮助读者熟练掌握Nginx在实际工作中的运用。 1. **Nginx基础** - **安装与配置**:介绍如何在不同的操作系统上安装Nginx,并进行基本的配置,如端口设置、服务器...
《Nginx开发从入门到精通》是一本深入解析Nginx技术的书籍,适合对Web服务器技术感兴趣的初学者和进阶者。Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于互联网领域的网站部署和负载均衡。本书旨在帮助读者...
- **配置解析**:Nginx启动时会读取配置文件,并根据配置指令初始化相应的模块和设置。 - **模块初始化**:在配置解析完成后,Nginx会初始化所有加载的模块。 - **热代码部署**:Nginx支持在不中断服务的情况下更新...
第五章深入解析Nginx的配置文件结构和常用指令,如root、index、location、proxy_pass等,这些都是构建高效Web服务的关键。 **4. 静态文件服务** 第六章会讨论Nginx处理静态文件的能力,如图片、CSS、JavaScript等...
四、Nginx 常用配置 1. server 块:定义虚拟主机,如监听端口、域名等。 2. location 块:根据请求的 URL 匹配规则进行处理,可以设置重定向、缓存、反向代理等。 3. proxy_pass:用于反向代理,将请求转发到指定的...
综合以上,这个压缩包的内容可能是一个全面的Java架构师和Nginx管理员的学习资源,覆盖了从基础理论到实践操作的各个环节,对于提升开发者在Java后端开发和Nginx运维方面的能力有着重要的指导价值。遗憾的是,"赚钱...
书中会详细讲解Nginx的安装与配置,包括基础配置文件结构、常用指令解析,以及如何进行模块定制。读者还将学习如何利用Nginx实现HTTPS安全访问,以及设置HTTP/2协议来提高网络传输效率。此外,书中的案例分析和实战...
以上是对《Nginx应用技术指南》中的主要知识点进行了详细的总结和扩展,涵盖了Nginx的基础知识、安装配置、优化技巧、URL分发、重写规则、访问控制、日志处理等多个方面,旨在帮助读者全面掌握Nginx的应用技巧和最佳...
**Nginx开发指南**是一份详尽的技术文档,旨在为开发者提供全面的Nginx开发指导,包括其内部架构、编程接口以及实现原理等内容。对于希望深入了解Nginx工作原理或打算为其贡献模块的开发者来说,这份指南具有极高的...
Linux操作系统是类Unix操作系统,免费使用和自由传播,支持多...整体来看,这份教程涵盖了Linux运维领域的全面知识点,不仅适合初学者入门学习,同样适合有一定基础的用户深入学习,是一套实用且全面的Linux运维教程。
以下是对【标题】"2022最新版运维最全面面试题!"中涉及的知识点的详细阐述: 1. **Nginx优化**:Nginx作为一款高性能的HTTP和反向代理服务器,其性能优化主要包括配置优化、缓存策略、并发处理能力增强等。例如,...
这套Docker零基础学习全套教程资源,包含从Docker的基本概念、安装、配置,到实战项目以及源码的详细解析。资源适合从零开始学习Docker技术的读者,内容通俗易懂,包教包会包分配。教程中包含Docker的安装和卸载,...
- **概述**:Nginx支持多种事件处理模型,其中最常用的是epoll(适用于Linux系统)和kqueue(适用于FreeBSD系统)。这些模型允许Nginx在单个工作进程中处理大量并发连接。 - **epoll机制**:epoll是Linux内核2.6及...
### Linux运维从入门到高级全套案例教程 #### Linux入门篇 **1.1 Linux操作系统简介** Linux是一款开源、免费的类Unix操作系统,以其强大的稳定性、安全性以及灵活性在服务器领域占据了主导地位。它由芬兰人Linus...
Linux学习教程,特别是针对Red Hat Linux的基础教程,...本教程将全面涵盖这些主题,并提供实践操作指导,使学习者能够从零基础开始,逐步掌握Red Hat Linux的基本操作和管理技能,为后续的Linux高级应用打下坚实基础。
《Nginx_SSM_springcloud_小滴课堂笔记》是一个综合性的学习资源包,包含了Web开发中的关键技术和框架,包括Nginx、SSM(Spring、SpringMVC、Mybatis)以及SpringCloud。这份资料旨在帮助开发者深入理解和掌握这些...
Linux教程是IT领域中不可或缺的一部分,它为初学者和专业...通过这个全面的Linux教程,学习者不仅可以获得扎实的Linux基础,还能具备解决实际问题的能力,为日后的系统管理、开发工作或进一步的学习打下坚实的基础。
5. **Nginx配置文件说明** (07.nginx配置文件说明.mp4):Nginx的配置文件是其功能定制的关键,这部分会讲解配置文件的结构和常用指令,如何配置监听端口、处理请求的规则、代理设置等。 6. **Nginx配置连接数** (08...