开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Nginx 配置学习笔记
Nginx 配置学习笔记 最近在学习如何对 Nginx 进行配置,故而对 Nginx 的配置文件的结构功能有了一些新的认识。刚开始接触 Nginx 时,感觉它的配置十分高深、难以理解,需要配置什么功能都是网上搜索现成的代码,复制粘贴,重启服务器。
11146 0
使用Nginx结合CertBot配置HTTPS协议
Nginx结合CertBot配置HTTPS协议,同时简单介绍cron定时规则
4377 0
Nginx配置端口转发
根据域名利用Nginx实现端口转发,从而达到一台服务器转发到多个项目。
6750 0
一系列nginx安全配置
一、模块 1.查看所有模块: [root@proxy nginx-1.12.2]# ./configure --help 2.选择适合的模块:pcre:开启正则表达式支持http_autoindex_module:自动索引模块ssi_module:SSI 脚本http_ssl_module:ss...
1983 0
配置 unicorn 和 nginx 运行 Redmine
Redmine 支持多种服务器配置, Web 服务器可选择 nginx 或 apache, Ruby 应用服务器可选择 unicorn, passenger, puma 或 thin。 Easy Redmine 的官方安装文档推荐使用 nginx + unicorn 运行 Easy Redmine 并给出了详细的安装配置手册。
2417 0
nginx的fastcgi模块配置与php-fpm配置记录
nginx的fastcgi模块配置与php-fpm配置记录
3097 0
nginx配置正向代理支持HTTPS
配置正向代理支持HTTPShttp://www.bieryun.com/1675.html nginx当正向代理的时候,通过代理访问https的网站会失败,而失败的原因是客户端同nginx代理服务器之间建立连接失败,并非nginx不能将https的请求转发出去。
16314 0
Nginx配置https证书三种情况总结
没有购买负载均衡产品时,Nginx配置https证书小结
3592 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Nginx 代理系统常用手册》
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载
ECS系统指南之Linux系统诊断
立即下载