Linux中的Nginx的基础知识

一、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 baidu.com;
if ($invalid_referer) {
rewrite ^/[img] 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;

相关阅读:

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d96a948e4d27806cc2b5ca82e81b499a.html