Nginx介绍:
Nginx是一款采用Linux 2.6内核epoll新机制开发的Web服务器软件,能极大地提高Web访问特别是小文件访问的I/O性能,是c10k问题的一个解决方案。在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。
高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。
内存消耗少:在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。
配置文件非常简单:风格跟程序一样通俗易懂。
成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
支持Rewrite重写规则:能够根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。
内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
稳定性高:用于反向代理,宕机的概率微乎其微。
安装Nginx:
http://blog.s135.com/nginx_php_v5/
rewrite设置:
if ($http_user_agent ~ MSIE) {
rewrite ^/star(.*)$ http://www.xxx.com/star/$1 break;
}
反向代理设置:
location /star {
proxy_pass http://www.xxx.com/star;
}
负载均衡设置:
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
#本机上的Squid开启3128端口
server 192.168.8.1:3128 weight=5;
server 192.168.8.2:80 weight=1;
server 192.168.8.3:80 weight=6;
}
#对 "/" 启用负载均衡
location / {
proxy_pass http://mysvr;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
另参考:
upstream bakend{#定义负载均衡设备的Ip及设备状态
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
在需要使用负载均衡的server中增加
proxy_pass http://bakend/;
每个设备的状态设置为:
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
URL hash设置:
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream tomcats {
server 10.1.1.107:88 weight=10;
server 10.1.1.132:80 weight=10;
}
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream tomcats {
ip_hash;
server 10.1.1.107:88;
server 10.1.1.132:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
nginx 开启SSI:
nginx 也有内置的SSI 模块 ngx_http_ssi_module
配置文件开启
ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
这样就可以支持shtml了
利用proxy_store实现高效的静态文件缓存服务器:
location /star {
proxy_pass http://www.xxx.com/star;
proxy_store on;
proxy_temp_path /opt/cache;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Via "s9/nginx";
proxy_store_access user:rw group:rw all:rw;
if ( !-e $store_file ) {
proxy_pass http://www.xxx.com;
}
}
注意需要一个定时删除缓存的脚本:
find /opt/Cache/ -type -atime 30 |xargs rm -rf {}
使用Nginx的proxy_cache缓存功能取代Squid
网上已有介绍使用Nginx的proxy_cache缓存功能取代Squid的文章,如:http://blog.s135.com/nginx_cache/
查看nginx的状态:
location /nginx_status {
stub_status on;
access_log off;
allow SOME.IP.ADD.RESS;
deny all;
}
防盗链设置:
1 简单的通过referer判断
location ~ .*\.(gif|jpg|jpeg|png|bmp|wma|mp3|swf)$ {
valid_referers none blocked server_names *.163.com 163.com baidu.com;
if ($invalid_referer) {return 403;}
expires 30d;
}
2 Nginx_HttpAccessKey_Module 插件
下载 http://wiki.nginx.org/images/5/51/Nginx-accesskey-2.0.3.tar.gz
这个需要安装额外的模块,下载模块源码,然后按照说明文档,将下载来的源码中"$HTTP_ACCESSKEY_MODULE" 替换成 "ngx_http_accesskey_module",再
1. ./configure --add-module=path/to/nginx-accesskey
完了以后再重新编译一次nginx,然后就可以在配置文件中使了。
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
这样一个下载的文件就需要 http://example.com/download/file.zip?key=09093abeac094 这样的形式进行下载
其中 key的值为 mypass和下载客户端ip 进行md5运算获得。比如在 php 中可以向如下方式输出针对客户ip的下载链接地址
1. <?
2. $ipkeyvalue = md5("mypass".$_SERVER['REMOTE_ADDR']);
3. $out_keyfile_link="<a href=http://example.com/download/testfile.rar?key=".$ipkeyvalue.">防盗链文件下载</a><br />";
4. echo $out_keyfile_link;
5. ?>
这样当一个用户将访问地址拷贝给别人时,因为访问ip不同,就造成 md5("mypass".ipaddr) 值不同,达到防盗链目的。
注意:这里accesskey_signature后面的mypass是干扰码,你可以改为自己需要的密码。
nginx限速处理:
限速使用 limit_zone, limit_conn 以及 limit_rate 进行配置
首先在 http 段配置一个 limit_zone,然后在需要的地方使用 limit_conn 和 limit_rate 进行限速设置,如下一个简单的例子
http {
limit_zone one $binary_remote_addr 10m;
server {
location /files/ {
limit_conn one 1;
limit_rate 20k;
}
}
}
说明:
limit_zone,是针对每个IP定义一个存储session状态的容器。这个示例中定义了一个名叫one的10m大小的容器,这个名字会在后面的limit_conn中使用。
limit_conn one 1;
限制在one中记录状态的每个IP只能发起一个并发连接。
limit_rate 20k;
对每个连接限速20k. 注意,这里是对连接限速,而不是对IP限速。如果一个IP允许三个并发连接,那么这个IP就是限速为limit_rate×3,在设置的时候要根据自己的需要做设置调整,要不然会达不到自己希望的目的。
分享到:
相关推荐
1、高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例 内容:概述Nginx的背景知识和简单的入门实例。 2、高性能Web服务器Nginx的配置与部署研究(2)Nginx入门级配置与部署及“Hello World” 内容:...
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。 Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor ...
Nginx是目前备受关注的一个高性能HTTP和反向代理服务器,具有简单、灵活的配置和极高的执行效率。本书面向Linux运维方向的用户或具备某一类编程语言c、PHP 、Java基础的读者,旨在使其快速掌握Nginx的配置与应用,...
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器
nginx是俄罗斯人igor sysoev编写的一款高性能的http和反向代理服务器。nginx选择了epoll和kqueue作为网络i/o模型,在高连接并发的情况下,内存、cpu等系统资源消耗非常低,运行稳定。 本书系统地介绍了nginx与php...
取代Apache的高性能Web服务器 电子工业出版社 319页 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 1.4 Nginx与Apache、Lighttpd的综合对比 第2章 Nginx服务器...
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器
centos 6.5下安装、配置高性能服务器Nginx!
Nginx (engine x) 是一个轻量级的、高性能的、基于 Http 的、反向代理服务器,静态 web 服务器。 Nginx 最初是由俄罗斯人 Igor Sysoev(伊戈尔·赛索耶夫)使用 C 语言为俄罗斯访问量第 二的 Rambler.ru 站点开发的...
实战Nginx:取代Apache的高性能Web服务器,这是一本很不错的书。能够帮助大家搭建一个高性能的web服务器 第1章 Nginx简介.pdf 第2章 Nginx服务器的安装与配置.pdf 第3章 Nginx的基本配置与优化.pdf 第4章 Nginx与PHP...
张宴《实战Nginx:取代Apache的高性能Web服务器》pdf电子版下载,此资料网友共享,请购买作者正版书籍. 目录介绍: 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 ...
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0...
Nginx是一款高性能的开源Web服务器,同时也可以用作点播(On-Demand)媒体服务器。点播服务器通常用于提供音频和视频文件的分发,以支持用户随时随地访问这些媒体内容。以下是Nginx作为点播服务器的一些特点和功能:...
Nginx (“engine x”) 是俄罗斯人Igor Sysoev编写的一款高性能HTTP 和反向代理服务器。Nginx选择了epoll和kqueue作为网络I/O模型,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,它能够支持高达50 000个...
1. Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。...
Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同...
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4...
《高性能Linux服务器构建实战》第一章电子版本下载