红联Linux门户
Linux帮助

Linux中的Nginx的基础知识

发布时间:2015-05-16 21:55:26来源:linux网站作者:wqianyniaimonly

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

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


Ubuntu下Nginx启动、停止等常用命令:http://www.linuxdiyf.com/linux/10610.html

Nginx配置优化指南:http://www.linuxdiyf.com/linux/11173.html

Linux下查看Nginx安装目录、版本号信息?:http://www.linuxdiyf.com/linux/10386.html

Ubuntu下Nginx版本升级:http://www.linuxdiyf.com/linux/10313.html

详解Linux下安装配置Nginx:http://www.linuxdiyf.com/linux/10127.html