当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪nginx的upstream的5种分配方式      1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况.........
    ▪nginx 模块优化设置参考      使用一台nginx作前端负载,来减轻后端apache服务器的压力。 nginx.conf 的主要参考 server_names_hash_bucket_size 128;##用于制定服务器名称哈希表的框大小,默认取决于cpu缓存 limit_zone one $binary_remote_addr .........
    ▪nginx防盗链设置的例子      网站防盗链配置:   代码如下: location ~* \.(gif|jpg|jpeg|png|bmp|swf|)$ {    # valid_referers none blocked bbs.aa.com;    # if ($invalid_referer)    # {    #     rewrite ^/ http://www./bbs.jpg;    # } }   第一.........

[1]nginx的upstream的5种分配方式
    来源: 互联网  发布时间: 2013-12-24

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:
 

代码如下:
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
 

代码如下:
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
 

代码如下:
upstream backend {
server server1;
server server2;
fair;
}

5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
 

代码如下:
upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

tips:
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机器。所以这台机器压力会最轻。
nginx支持同时设置多组的负载均衡,用来给不用的server来使用。
client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug。
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录。
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡。

要用nginx做负载均衡的话,首先要在配置文件里面定义一组用来负载均衡的后端服务器(backend servers),例如:
 

代码如下:
upstream backend {
  server 192.168.1.11;
  server 192.168.1.12;
  server 192.168.1.13;
}
 

那个server指令的语法是 server name [parameters],这里的name是服务器名,可以是域名、ip或者unix socket,也可以指定端口,例如:
server 192.168.1.11:8080;

server指令可用的参数有:
weight 设置服务器的权重,默认值是1,权重值越大那么该服务器被访问到的几率就越大,例如 server 192.168.1.11 weight=5;
max_fails和fail_timeout 这俩是关联的,如果某台服务器在fail_timeout时间内出现了max_fails次连接失败,那么nginx就会认为那个服务器已经挂掉,从而在 fail_timeout时间内不再去查询它,fail_timeout的默认值是10s,max_fails的默认值是1(这意味着一发生错误就认为服务器挂掉),如果把max_fails设为0则表示把这个检查取消。
举个例子:server 192.168.1.11 max_fails=3 fail_timeout=30s; 这表示,如果服务器192.168.1.11在30秒内出现了3次错误,那么就认为这个服务器工作不正常,从而在接下来的30秒内nginx不再去访问这个服务器。
down 表示该服务器已经停用,例如server 192.168.1.11 down;
backup 表示该服务器是备用服务器,只有其它后端服务器都挂了或者很忙才会访问到。

关于upstream的更多信息请参考 http://wiki.nginx.org/NginxHttpUpstreamModule


    
[2]nginx 模块优化设置参考
    来源: 互联网  发布时间: 2013-12-24

使用一台nginx作前端负载,来减轻后端apache服务器的压力。

nginx.conf 的主要参考
server_names_hash_bucket_size 128;##用于制定服务器名称哈希表的框大小,默认取决于cpu缓存

limit_zone one $binary_remote_addr 10m;#定义一个叫one的记录区,容量为10m,一遍量$binary_remote_addr 作为绘画判断的基准。
limit_conn one 1;#也可以写道location里one为上面定义的记录区,一个会话只能进行一个连接

limit_req_zone $binary_remote_addr zone=one2:10m rate=1r/s;#限制了每秒只接受一个ip一次请求“请求数/秒 (r/s)
 limit_req zone=one2 burst=5;  ## 也可以在location里设置最大的突发请求数
ignore_invalid_headerson;
recursive_error_pages on;
server_name_in_redirect off;
if_modified_since exact; ##主要用来expires的时间修改

sendfile on;##用于数据拷贝在两个文件描述符之间的操作函数。

#timeouts
keepalive_timeout 60;

#TCP Options
tcp_nopush  on;###只在sendfile开起的时候有用,是否允许使用tcp_cork 套接字
tcp_nodelay on;

#fastcgi options
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_cache_path /var/www/tmp/fastcgi_cache_path levels=1:2keys_zone=fastcgi_cache:500m inactive=30m max_size=10000M;
fastcgi_temp_path /var/www/tmp/fastcgi_temp_path;
fastcgi_cache_methods GET HEAD;#缓存的信息
fastcgi_cache_min_uses 3;#最小使用
#fastcgi_cache fastcgi_cache;
fastcgi_cache_valid 200 302 20m; #状态码200 302  缓存20分钟
fastcgi_cache_valid 301 1h;#301缓存一个小时
fastcgi_cache_valid any 20m;#其他说有缓存20分中
fastcgi_cache_key 127.0.0.1:9000$request_uri;#用来设置被缓存的key
fastcgi_buffer_size 128k;####设置服务器相应头部缓冲区大小
fastcgi_buffers 4 128k;#设置fastcgi进程返回信息的缓冲区数量和大小,
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_intercept_errors on;###用来是否把客户端4xx和5xx 错误页或允许nginx自动制定错误页

#size limits
client_max_body_size50m;允许客户端请求的最大的单个文件字节数
client_body_buffer_size 256k; 缓冲区代理缓冲用户客户端请求的最大字节数,可以理解为先保存到本地在传给用户
client_body_timeout 60;#设置读取客户端请求内容的超时时间
client_header_buffer_size 1k;#用户设置客户端请求的header头缓冲区大小
large_client_header_buffers 4 32k;#最大缓存客户端请求header 大小

#gzip  compression
gzip on; #启动
gzip any;无条件启用压缩,其中这里有几个选项我就不写了
gzip_min_length  0;#允许压缩最小字节数,默认0不管多大都压,建议设置成大于1k,小于1k,越压越大,
gzip_buffers  16 8k;
gzip_http_version 1.0;#早期的客户端可能不支持gzip 打开是乱码,启用后可防止这一问题
gzip_comp_level 9;#压缩级别1-9 9为最高
gzip_typestext/plain text/css image/x-icon image/png;#匹配类型压缩
gzip_vary on; #vary头信息 是cache明中率杀手可以考虑注释

#temp files
proxy_temp_path /var/www/tmp/proxy_temp_path;
#fastcgi_temp_path/var/www/tmp/fastcgi_temp;
client_body_temp_path/var/www/tmp/client_body_temp;###用户存放请求内容的临时文件
#client_body_temp_path  /usr/local/nginx8/client_body_temp 1 2;
#proxy_temp_path/usr/local/nginx8/proxy_temp 1 2;
#fastcgi_temp_path/usr/local/nginx8/fastcgi_temp 1 2;
#proxy
proxy_buffering on;
proxy_buffer_size 16k; #代理请求缓存去,保存用户的信息以供nginx进行规则处理
proxy_buffers 4 32k;#nginx保存单个的几个buffer 及最大用多大空间
proxy_busy_buffers_size 64k;##如果系统很忙的时候可以申请更大的,推荐*2
proxy_temp_file_write_size 64k;##缓存临时文件大小
proxy_cache_min_uses 3;
proxy_cache_path /var/www/tmp/proxy_cache_path levels=1:2 keys_zone=cache:500m inactive=30m max_size=10000M;#缓存
proxy_cache_valid any 10m;
proxy_cache_methods GET HEAD;
proxy_cache_key "$host:$server_port$uri$is_args$args";
proxy_ignore_client_abort off;
proxy_intercept_errors on;
proxy_next_upstream error timeout invalid_header;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 60; #跟后端服务器连接的超市时间=发起握手等候响应超时时间。
proxy_send_timeout 60;#后端服务器数据回收时间=就是在规定时间之后后端服务器必须传完所有数据
proxy_read_timeout 60;##连接成功后=等候后端服务器响应时间=就是进入等待了

虚拟主机参考:
在locotion 里加上一句:
proxy_cache cache;


    
[3]nginx防盗链设置的例子
    来源: 互联网  发布时间: 2013-12-24

网站防盗链配置:
 

代码如下:
location ~* \.(gif|jpg|jpeg|png|bmp|swf|)$
{
   # valid_referers none blocked bbs.aa.com;
   # if ($invalid_referer)
   # {
   #     rewrite ^/ http://www./bbs.jpg;
   # }

 

第一行:gif|jpg|png|swf|flv
表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
第二行: 表示对www.aa.com这2个来路进行判断
if{}里面内容的意思是,如果来路不是指定来路就跳转到http://www./bbs.jpg;

第二种方法(说明:如果你对这个不是很熟悉,不要在线上服务器进行设置,最好先自己测试)
1. 下载NginxHttpAccessKeyModule模块文件:Nginx-accesskey-2.0.3.tar.gz;
2. 解压此文件后,找到nginx-accesskey-2.0.3下的config文件。编辑此文件:替换其中的”$HTTP_ACCESSKEY_MODULE”为”ngx_http_accesskey_module”;
3. 用一下参数重新编译nginx:
./configure --add-module=path/to/nginx-accesskey
4. 修改nginx的conf文件,添加以下几行:
 

代码如下:
location /download {
  accesskey             on;
  accesskey_hashmethod  md5;
  accesskey_arg         "key";
  accesskey_signature   "mypass$remote_addr";
}
 

其中:
accesskey为模块开关;
accesskey_hashmethod为加密方式MD5或者SHA-1;
accesskey_arg为url中的关键字参数;
accesskey_signature为加密值,此处为mypass和访问IP构成的字符串。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3