linux中的nginx的基础知识

简介:

一、Nginx基础知识 

、 简介 

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

、Nginx 的优点 

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

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

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

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

、 模块化的结构。 

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

、 支持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() 调用时,还可以限制每个进程的连接数。

libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。

反向代理加速器有:Squid varnish(线程) nginx [http mail ] memcached[mysql]

Apache与nginx的区别:

Apache  进程   prefork  8  slect   轮训机制  内存占用大   并发不会超过3000

Nginx   线程  epoll 事件通知机制  最高可到50000的并发连接请求  7层机制  反向代理加速 10000并发请求只需要2.5M的内存空间

符号介绍:

* ~为区分大小写匹配 

  * ~*为不区分大小写匹配 

!~和!~* 分别为区分大小写不匹配及不区分大小写不匹配

1. 文件及目录匹配,

* -f 和!-f 用来判断是否存在文件 

* -d 和!-d 用来判断是否存在目录 

* -e 和!-e 用来判断是否存在文件或目录

* -x 和!-x 用来判断文件是否可执行

 

2.Nginx防盗链

#Preventing hot linking of images and other file types 

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {  

valid_referers none blocked server_names *.chinarenservice.com http://localhost baidu.com; 

if ($invalid_referer) { 

rewrite ^/[img]http://www.ch inarenservice.com/images/default/logo.gif[/img];

# return403; 

3. Nginx 下禁止访问*.txt 文件,配置方法如下. 代码

location ~* \.(txt|doc)$ { 

if (-f $request_filename) { 

root /var/InfiNET/web/chinarenservice/test; 

break; 

}

4.禁止下载以点开头的文件:如.freeke ;.dat ;.exe

location ~ /\..+ { 

deny all; 

}

5.禁止访问某个目录

location ~ ^/(WEB-INF)/ {

deny all;

}

6.使用ngx_http_access_module限制 ip 访问

location / { 

deny192.168.1.1; 

allow192.168.1.0/24; 

allow10.1.1.0/16; 

denyall; 

}

7.Nginx下载限制并发和速率

limit_zoneone$binary_remote_addr10m; 

server

listen80; 

server_namedown.chinarenservice.com; 

index index.html index.htm index.php; 

root/var/InfiNET/web/down; 

#Zone limit 

location / { 

limit_connone1; 

limit_rate20k;

8.大文件上传限制

上传碰到“413 Request Entity Too Large” 错误。只想让Nginx 可以处理 1M 以上的文件上传,可以更改设置(例

如允30M 的文件上传):在Nginx.conf 的http{} 中增加 

client_max_body_size 30m 

同时要修改php.ini 中相关参数 

[Resource Limits] 

max_execution_time = 800; Maximum execution time of each script, in seconds 由于上传大文件比较费时,所

以max_execution_time设为800, 默认是 30 

[Data Handling ] 

; Maximum size of POST data that PHP will accept. 修改下面的数值,以增大上传文件大小, 默认是8M 

post_max_size = 20M 

[File Uploads] 

; Maximum allowed size for uploaded files. 修改下面的数值,以增大上传文件大小, 默认是2M 

upload_max_filesize = 20M

9. Nginx 出现的 413 Request Entity Too Large错误

这个错误一般在上传文件的时候出现,打开Nginx 主配置文件 Nginx.conf,找到http{} 段,添加 

client_max_body_size 8m; 

要是跑php 的话这个大小client_max_body_size要和 php.ini 中的如下值的最大值一致或者稍大,这样就不会

因为提交数据大小不一致出现的错误。 

post_max_size = 8M 

upload_max_filesize = 2M

10. 解决504 Gateway Time-out

504 Gateway Time-out 问题常见于使用 Nginx 作为 web server的服务器的网站, 遇到这个问题是在升级

discuz 论坛的时候遇到的,一般看来,这种情况可能是由于Nginx 默认的 fastcgi 进程响应的缓冲区太小造成

的,这将导致 fastcgi 进程被挂起,如果你的 fastcgi 服务对这个挂起处理的不好,那么最后就极有可能导致 504

Gateway Time-out 

现在的网站,尤其某些论坛有大量的回复和很多内容的,一个页面甚至有几百 K,默认的 fastcgi 进程响应的缓

冲区是8K,我们可以设置大点。在Nginx.conf 里,加入: 

fastcgi_buffers 8 128k

这表示设置fastcgi 缓冲区为 8×128k 

当然如果您在进行某一项即时的操作,可能需要 Nginx 的超时参数调大点,例如设置成 60 秒: 

send_timeout 60;










本文转自 only223wym 51CTO博客,原文链接:http://blog.51cto.com/ymchaofeng/1291989,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
Linux 应用服务中间件 Apache
Linux Apache服务详解——Apache服务基础知识
Linux Apache服务详解——Apache服务基础知识
33 2
|
1月前
|
域名解析 缓存 网络协议
Linux DNS服务详解——DNS基础知识
Linux DNS服务详解——DNS基础知识
72 1
|
2月前
|
Linux 芯片
Linux 驱动开发基础知识——认识LED驱动程序 (二)
Linux 驱动开发基础知识——认识LED驱动程序 (二)
35 0
Linux 驱动开发基础知识——认识LED驱动程序 (二)
|
21天前
|
应用服务中间件 Linux PHP
Linux下安装php环境并且配置Nginx支持php-fpm模块
Linux下安装php环境并且配置Nginx支持php-fpm模块
18 0
|
1月前
|
运维 网络协议 安全
Linux vsFTPd服务详解——vsFTPd基础知识
Linux vsFTPd服务详解——vsFTPd基础知识
28 4
|
1月前
|
Linux C语言 芯片
嵌入式linux系统中设备树基础知识
嵌入式linux系统中设备树基础知识
48 0
|
2月前
|
存储 Linux 应用服务中间件
VMware安装无GUI版本的Linux(CentOS7)——安装Nginx示例demo
VMware安装无GUI版本的Linux(CentOS7)——安装Nginx示例demo
120 1
|
2月前
|
存储 应用服务中间件 Linux
Linux安装nginx——完整示例
Linux安装nginx——完整示例
89 0
|
2月前
|
Linux 芯片 开发者
Linux 驱动开发基础知识——内核对设备树的处理与使用(十)
Linux 驱动开发基础知识——内核对设备树的处理与使用(十)
152 0
Linux 驱动开发基础知识——内核对设备树的处理与使用(十)
|
2月前
|
Ubuntu Linux 芯片
Linux 驱动开发基础知识——设备树的语法驱动开发基础知识(九)
Linux 驱动开发基础知识——设备树的语法驱动开发基础知识(九)
68 1
Linux 驱动开发基础知识——设备树的语法驱动开发基础知识(九)