admin 管理员组

文章数量: 887032


2024年1月17日发(作者:matlab授权中国大学)

Nginx 应用技术指南总结 V1.5 Freeke 整理于2008-12-12

Nginx应用技术指南

【前言】:....................................................................................................................................................................3

一、Nginx 基础知识....................................................................................................................................................3

1、 简介............................................................................................................................................................3

2、Nginx的优点....................................................................................................................................................3

3、 FastCGI,简单的负载均衡和容错........................................................................................................3

4、 模块化的结构。.........................................................................................................................................3

5、 支持SSL 和 TLS SNI...........................................................................................................................3

二、 Nginx 安装配置..................................................................................................................................................4

1、安装4

2、Nginx 编译安装...............................................................................................................................................4

3、Nginx 配置文件测试:...................................................................................................................................4

4、Nginx 启动:...................................................................................................................................................4

5、Nginx 配置文件修改重新加载:...................................................................................................................4

三、Nginx 编译优化....................................................................................................................................................4

1、 GCC 参数:..............................................................................................................................................4

2、 修改Nginx的header伪装服务器................................................................................................................5

3、 Tcmalloc 优化Nginx 性能........................................................................................................................6

4、 减小编译后文件大小:.............................................................................................................................7

四、Nginx 根据URL 分发........................................................................................................................................7

1、第一种方法:...................................................................................................................................................7

2、第二种方法:...................................................................................................................................................8

五、8

Rewrite 基本标记(flags)..........................................................................................................................8

2. 正则表达式匹配,............................................................................................................................................8

3. 文件及目录匹配,............................................................................................................................................9

的一些可用的全局变量,可用做条件判断:......................................................................................9

六、.10

七、Nginx 目录自动加斜线:.....................................................................................................................................10

八、Nginx 防盗链......................................................................................................................................................10

九、11

1、根据文件类型11

2、根据判断某个目录.........................................................................................................................................11

十、Nginx 访问控制..................................................................................................................................................11

1、Nginx 身份证验证.........................................................................................................................................11

2、Nginx 禁止访问某类型的文件.....................................................................................................................12

3、使用ngx_http_access_module限制ip访问.................................................................................................12

4、Nginx 下载限制并发和速率.........................................................................................................................12

5、大文件上传限制.............................................................................................................................................13

6、Nginx 实现Apache一样目录列表................................................................................................................13

7、 http_accesskey_module 模块应用:...........................................................................................................13

十一、14

1. 基本语法:.................................................................................................................................................15

Nginx 应用技术指南总结 V1.5 Freeke 整理于2008-12-12

十二、Nginx 日志处理..............................................................................................................................................15

1、Nginx 日志切割.............................................................................................................................................15

2、 Nginx logrotate 处理:...........................................................................................................................15

3、 Nginx 16

4、 Nginx 如何不记录部分日志...................................................................................................................17

十三、Nginx Cache服务配置.....................................................................................................................................17

十四、Nginx 负载均衡..............................................................................................................................................17

1. Nginx 基础知识...........................................................................................................................................17

2. Nginx 负载均衡实例1................................................................................................................................18

8、 Nginx 负载均衡实例...............................................................................................................................18

十五、Nginx 原理代码分析:..................................................................................................................................20

1、剖析Nginx等单线程服务器设计原理与性能优势.......................................................................................20

2、Nginx等web 服务器设计中关于相关注意事项与心得..............................................................................21

3、向上取倍数,Nginx实现内存对齐的宏.......................................................................................................22

4、Nginx的内存池管理分析(a)..........................................................................................................................24

5、Nginx的内存池管理分析(b)..........................................................................................................................25

6、Nginx 数据结构 数组,列表.......................................................................................................................29

7、Nginx源代码分析...........................................................................................................................................30

8、Nginx代码分析之(一)——初探...............................................................................................................32

9、Nginx代码分析之(二)——Empty Gif是如何工作的..............................................................................33

10、Nginx 连接处理...........................................................................................................................................37

11、......................................................................................................................................................................38

12、......................................................................................................................................错误!未定义书签。

十六、问题总结38

1、 反向代理至后端apache网站无法输验证码..........................................................................................38

2、 利用 Nginx url hash 提高squid服务器命中率......................................................................................38

3、 Nginx实践 使用memcached模块加速PHP应用程序............................................................................39

4、 Nginx上的Memcached应用改进.............................................................................................................41

5、 Nignx配合Memcached提升400%性能................................................................................................42

6、 Nginx出现的413 Request Entity Too Large错误....................................................................................42

7、 解决504 42

8、 Nginx 502 Bad Gateway错误...................................................................................................................43

1)、第一种方法:...............................................................................................................................................43

2)、第二种方法:.......................................................................................................................................43

9、 400 bad request错误的原因和解决办法................................................................................................43

10、 Nginx Awstats 日志分析.....................................................................................................................44

11、 Nginx Upload 上传模块......................................................................................................................44

12、 Nginx SSL 配置:............................................................................................................................45

1)、编译:...................................................................................................................................................45

2)、配置:..................................................................................................................................................46

13、......................................................................................................................................................................46

十七、参考资料..........................................................................................................................................................46

Nginx 应用技术指南总结 V1.5 Freeke 整理于2008-12-12

【前言】:

编写此技术指南在于推广普及NGINX在国内的使用,更方便的帮助大家了解和掌握NGINX的一些使用技巧。本指南很多技巧来自于网络在此对网络上愿意分享的朋友们表示感谢和致意!欢迎大家和我一起丰富本技术指南并提出更好的建议!

一、Nginx 基础知识

1、 简介

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。更多的请见官方wiki:

/NginxChs

2、Nginx的优点

Nginx做为HTTP服务器,有以下几项基本特性:

1.处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.

2.无缓存的反向代理加速,简单的负载均衡和容错.

3、 FastCGI,简单的负载均衡和容错.

4、 模块化的结构。

包括gzipping, byte ranges, chunked responses, 以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。

5、 支持SSL 和 TLS SNI.

Nginx专为性能优化而开发,性能是其最重要的考量, 实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验, 有报告表明能支持高达 50,000 个并发连接数。

Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。Nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对Nginx来说基本上是毫无用处的。就稳定性而言, Nginx比lighthttpd更胜一筹。

Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

Nginx采用master-slave模型, 能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻塞延迟。当采用select()/poll()调用时,还可以限制每个进程的连接数。

Nginx代码质量非常高,代码很规范, 手法成熟, 模块扩展也很容易。特别值得一提的是强大的Upstream与Filter链。 Upstream为诸如reverse proxy,与其他服务器通信模块的编写奠定了很好的基础。而Filter链最酷的部分就是各个filter不必等待前一个filter执行完毕。它可以把前一个filter的输出做为当前filter的输入,这有点像Unix的管线。这意味着,一个模块可以开始压缩从后端服务器发送过来的请求,且可以在模块接

Nginx 应用技术指南总结 V1.5 Freeke 整理于2008-12-12

收完后端服务器的整个请求之前把压缩流转向客户端。

Nginx采用了一些os提供的最新特性如对sendfile (Linux 2.2+),accept-filter (FreeBSD 4.1+),TCP_DEFER_ACCEPT (Linux 2.4+) 的支持,从而大大提高了性能。

二、 Nginx 安装配置

1、安装pcre

./configure

make && make install

cd ../

2、Nginx 编译安装

./configure --user=www --group=www --prefix=/usr/local/Nginx/ --with-http_stub_status_module

--with-openssl=/usr/local/openssl

make && make install

更详细的模块定制与安装请参照官方wiki.

3、Nginx 配置文件测试:

[root@Chinarenservice ~]# /usr/local/nginx/sbin/nginx -t

2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/ syntax is ok

2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/ was tested successfully

4、Nginx 启动:

[root@Chinarenservice ~]# /usr/local/nginx/sbin/nginx

5、Nginx 配置文件修改重新加载:

[root@Chinarenservice ~]# kill -HUP `cat /usr/local/nginx/logs/`

三、Nginx 编译优化

1、 GCC 参数:

Nginx 应用技术指南总结 V1.5 Freeke 整理于2008-12-12

默认Nginx使用的GCC编译参数是-O,需要更加优化可以使用以下两个参数

–with-cc-opt=’-O3′

–with-cpu-opt=opteron

使得编译针对特定CPU以及增加GCC的优化,针对优化后的结果.我们进行测试结果表明使用-O2以及以上的参数,可以微量增加性能1%左右,而O2和O3基本可以认为是相同的:

./http_load -parallel 100 -seconds 10 urls

10811 fetches, 100 max parallel, 5.23252e+06 bytes, in 10 seconds

a、默认参数 -O

1087.2 fetches/sec, 526204 bytes/sec

msecs/connect: 45.5374 mean, 63.984 max, 1.008 min

msecs/first-response: 45.7679 mean, 64.201 max, 2.216 min

1088.9 fetches/sec, 527027 bytes/sec

msecs/connect: 45.0159 mean, 65.291 max, 0.562 min

msecs/first-response: 46.1236 mean, 67.397 max, 9.169 min

1102.2 fetches/sec, 533465 bytes/sec

msecs/connect: 44.5593 mean, 67.649 max, 0.547 min

msecs/first-response: 45.499 mean, 67.849 max, 2.495 min

B、优化编译后 -O2

1081.1 fetches/sec, 523252 bytes/sec

msecs/connect: 45.7144 mean, 63.324 max, 0.823 min

msecs/first-response: 46.1008 mean, 61.814 max, 4.487 min

1110.2 fetches/sec, 537337 bytes/sec

msecs/connect: 43.4943 mean, 60.066 max, 0.715 min

msecs/first-response: 45.756 mean, 62.076 max, 3.536 min

1107 fetches/sec, 535788 bytes/sec

msecs/connect: 44.872 mean, 3036.51 max, 0.609 min

msecs/first-response: 44.8625 mean, 59.831 max, 3.178 min

C、优化编译后 -O3

1097.5 fetches/sec, 531189 bytes/sec

msecs/connect: 45.1355 mean, 3040.24 max, 0.583 min

msecs/first-response: 45.3036 mean, 68.371 max, 4.416 min

1111.6 fetches/sec, 538014 bytes/sec

msecs/connect: 44.2514 mean, 64.831 max, 0.662 min

msecs/first-response: 44.8366 mean, 69.904 max, 3.928 min

1099.4 fetches/sec, 532109 bytes/sec

msecs/connect: 44.7226 mean, 61.445 max, 0.596 min

msecs/first-response: 45.4883 mean, 287.113 max, 3.336 min

2、 修改Nginx的header伪装服务器

# cd Nginx-0.6.31

# vi src/core/Nginx.h

#ifndef _NGINX_H_INCLUDED_

Nginx 应用技术指南总结 V1.5 Freeke 整理于2008-12-12

#define _NGINX_H_INCLUDED_

#define NGINX_VERSION "7.2"

#define NGINX_VER "Freeke/" NGINX_VERSION

#define NGINX_VAR "NGINX"

#define NGX_OLDPID_EXT ".oldbin"

#endif /* _NGINX_H_INCLUDED_ */

# curl -I

HTTP/1.1 200 OK

Server: Freeke/7.2

Date: Mon, 24 Nov 2008 02:42:51 GMT

Content-Type: text/html; charset=gbk

Transfer-Encoding: chunked

Connection: keep-alive

3、 Tcmalloc 优化Nginx 性能

从Nginx 0.6.29 添加 Feature: the ngx_google_perftools_module,那Nginx也可以利用Tcmalloc来提长性能。

[root@chinarenservice ~]# wget /releases/libunwind/

[root@chinarenservice ~]# tar zxvf

[root@chinarenservice ~]# cd libunwind-0.99-alpha/

[root@chinarenservice ~]# CFLAGS=-fPIC ./configure

[root@chinarenservice ~]# make CFLAGS=-fPIC

[root@chinarenservice ~]# make CFLAGS=-fPIC install

[root@chinarenservice ~]# wget /files/

[root@chinarenservice ~]# tar zxvf

[root@chinarenservice ~]# cd google-perftools-0.98/

[root@chinarenservice ~]# ./configure

[root@chinarenservice ~]# make && make install

[root@chinarenservice ~]# echo "/usr/local/lib" > /etc/.d/usr_local_

[root@chinarenservice ~]# ldconfig

[root@ chinarenservice local]# lsof -n | grep tcmalloc

Nginx 7323 root mem REG 8,2 1412859 440730

/usr/local/lib/.0.0.0

Nginx 7324 www mem REG 8,2 1412859 440730

/usr/local/lib/.0.0.0

Nginx 7325 www mem REG 8,2 1412859 440730

/usr/local/lib/.0.0.0

Nginx 7326 www mem REG 8,2 1412859 440730

/usr/local/lib/.0.0.0

Nginx 7327 www mem REG 8,2 1412859 440730

/usr/local/lib/.0.0.0

Nginx 应用技术指南总结 V1.5 Freeke 整理于2008-12-12

Nginx 7328 www mem REG 8,2 1412859 440730

/usr/local/lib/.0.0.0

Nginx 7329 www mem REG 8,2 1412859 440730

/usr/local/lib/.0.0.0

Nginx 7330 www mem REG 8,2 1412859 440730

/usr/local/lib/.0.0.0

Nginx 7331 www mem REG 8,2 1412859 440730

/usr/local/lib/.0.0.0

在编译Nginx时添加参数--with-google_perftools_module

4、 减小编译后文件大小:

默认的Nginx编译选项里居然是用debug模式(-g)的(debug模式会插入很多跟踪和ASSERT之类),编译以后一个Nginx有好几兆。去掉Nginx的debug模式编译,编译以后只有375K(Nginx-0.5.33, gcc4)。在

auto/cc/gcc,最后几行有:

# debug

CFLAGS=”$CFLAGS -g”

注释掉或删掉这几行,重新编译即可。-g

四、Nginx 根据URL 分发

1、第一种方法:

使用NginxHttpUpstreamRequestHashModule的方式,增加或减少机器时所引起的hash全部错乱的问题还是很令人担心,所以经过一段时间细致思考,觉得由自己手工制定并实现url hash规则,然后利用Nginx的location标签或if语法来实现来得更为灵活,可操作性和可用性会大大加强。不过配置就稍显复杂了,也需要程序方面的支持。

使用这种环境,主要需要考虑链接形式,链接形式不能够是/?id=1这样的带有?的,否则处理起来会很复杂,需要使用rewrite将这种形式的url变化成/freeke/,其中加一级目录的目的是可以利用到location标签。如果是纯静态页或图片,一般都会有自成的目录规则。

首先我们制定一个链接的划分规则,这个规则有点区别于文件目录的划分规则,它本身并不需要考虑文件夹内文件数目的多少,制定这个规则的目的是容纳足够多的服务器!一般来说,如果id是字符型的,只需要分出26个字母 10个数字,能够容纳36台cache服务器,这已经很足够了。如果是数字型的id,那就拿数字id

本文标签: 内存 文件 服务器 使用 需要

更多相关文章

windows Servers服务器系统时间总是自动更新为错误时间,修改了还是不对解决办法

16天前

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 原文链接: https:blog.cs

Win10打包tar.gz文件,Win10使用tar命令,Win10使用linux基本命令

16天前

Windows系统使用tar命令打包tar.gz文件 使用7z命令的时候无意打了tar命令,结果发现在windows powershell上也能使用tar命令?! 试了一下

电脑系统文件损坏?三种解决方案助你恢复正常使用

15天前

电脑系统文件损坏?三种解决方案助你恢复正常使用 在我们日常电脑的使用过程中,难免会遇到一些棘手的问题,比如电脑无法开机、应用闪退、频繁弹出错误提示等。这些现象往往预示着系统的某些文件可能已经遭到了损坏。面对这类情况,不必过于慌张,本文将介

GPU-主板-内存-硬盘-CPU-电源分类及区别总结大全

15天前

一、背景 用了7年的笔记本,现在感觉它实在是扛不住了,中间自己缝缝补补坚持到现在,把机械硬盘换成了固态,加装了内存条。换过2次还是3次风扇&#

服务器CPU天梯图(2024年12月),EPYC 9005Xeon 6900P洋垃圾E3及E5

14天前

原文首发&#xff08;高清无水印原图持续更新含榜单出处链接&#xff09;&#xff1a; >>>服务器CPU天梯图<<< 2024年12月4日更新日志&#xff1

Linux系统下载FTP服务器文件

14天前

方法1&#xff1a;使用wget下载 wget -nH -m --ftp-user%username --ftp-password%password ftp:**.**.**.** -nH&#xff1a;不创建以主机

windows文件自动同步

13天前

windows server 几大实时同步软件比较 需求&#xff1a; 从Windows Server 主机A 到 Windows Server 主机B 之间同步目录 方案一&#xff1a; 使用bat脚本计划任务

Windows操作系统 分页文件 | 九七的Windows开发

13天前

Windows操作系统 分页文件 环境 Windows7 64位 一、定义介绍 分页一词由Paging翻译而来。数据分成固定大小的区块叫做“页”。分页的第一个意思指的是磁盘和内存之间传输数据块的最小单位&#xff0c;即两者间

Windows 7 打开chm文件不显示内容的解决办法

13天前

一般网上下载的chm格式的电子书&#xff0c;在Windows 7系统下打开无法显示内容&#xff0c;这严格来说并不是Windows7的bug&#xff08;当然要说是bug也可&#xff09;&

u盘安装浪潮服务器_浪潮服务器NF5245m3重装系统|安装windows server2008 R2

12天前

一、配置raid阵列 1、服务器开机自检到浪潮logo 画面后&#xff0c;下一步就会进入Raid 卡自检过程&#xff0c;此时显示器上会出现Ctrl -H提示进入阵列配置 2、可以看到服务器有4块sata硬盘。状态都是

fwr310虚拟服务器设置,Fast迅捷FWR310无线路由器怎么设置

12天前

本文介绍了Fast迅捷FWR310无线路由器的安装和ADSL(PPPOE)拨号上网方式的设置方法&#xff0c;ADSL(PPPOE)拨号上网&#xff1a;指的是用户办理宽带业务后&#xff0c;宽带运营商提供了一

RamDisk 内存虚拟硬盘,Windows 2008 R2,Win7 64位系统

12天前

&#xfeff;&#xfeff;

Windows因文件移动导致无法启动某个服务(错误2:系统找不到指定的文件)

12天前

目录 错误缘由错误展示解决步骤&#xff08;修改windows可执行文件路径&#xff09;1. 打开注册表编辑器2. 按下图路径直至services&#xff0c;并找到对应的服务名单击3. 双击**ImageP

如何在Windows下将文件压缩成tgz格式的压缩包linux系统 centos下

12天前

安装7-ZIP以后&#xff0c;直接在你想要打包的文件上点右键菜单&#xff08;注意不要直接打包文件夹&#xff0c;而是打开文件夹后&#xff0c;选中全部文件&#xff0c;要不LUM下解压后

Navidrome音乐服务器 + 音流APP = 释放你的手机空间

11天前

20240727~20241015 By wdhuag 目录 前言&#xff1a; 参考&#xff1a; Navidrome音乐服务器  Demo试用&#xff1a; 支持多平台&#xff1a;

app调用手机其他应用打开文件

11天前

根据需求&#xff0c;app中展示的文件需要实现分享和用手机安装的相关软件打开查看&#xff0c;所以就用到了“其他应用打开文件”的功能&#xff0c;供用户不同途径的查阅。 这里&#xff0c;我们直接

安卓SDK文件目录

11天前

1.add-ons附加组件&#xff0c;存放关于google附加的API&#xff0c;如googlemap、effects 2.build-tools构建工具&#xff0c;包含了重要的编译工具&#xff

金蝶系统怎么清理服务器,“破坏王”教你如何彻底卸载金蝶kis专业版

11天前

卸载金蝶kis专业版(无论版本号)&#xff0c;可以通过软件再带的Update.exe程序进行自动卸载&#xff0c;但是这种方法并不能完全清除金蝶kis专业版在计算机中的所有数据。 而软件清除不彻底的情况&#xf

VMware清理vmdk文件

11天前

VMware清理vmdk文件 文章目录 VMware清理vmdk文件**在虚拟机上操作****在主机上操作** 问题 主机是Windows&#xff0c;安装了VMWare&#xff0c;在VMWare中安装了虚拟机Cent

windows7打印时,显示脱机,提示“服务器打印后台处理程序服务没有运行”。...

1天前

1. 问题 windows7打印时&#xff0c;显示脱机&#xff0c;提示“服务器打印后台处理程序服务没有运行”。 2. 解决方法。 将下面的文字保存为bat文件执行&#xff0c;其中\192.168.40.

发表评论

全部评论 0
暂无评论