Nginx作为轻量级HTTP服务器,性能上占用资源少,支持多并发,功能上可以实现代理服务器可用于负载均衡,配置上简单灵活!将自己最近的文档整理一下,备以后使用,这里单从功能实现的基础配置上进行说明

负载均衡(做分发服器)

1、基于浏览器的分发

基于浏览器的分发,按照在不同平台的浏览器请求进行分发,比如手机浏览器讲究资源小速度快节省流量,所以将自手机浏览器的请求分发到专供处理移动平台的web服务器上,而在PC上浏览网页注重体验,所以将来自IE浏览器的请求分发到专供处理PC平台的服务器上,这样可以使在不同平台的用户都能得到适合自己的体验!

添加多个upstream

vim /usr/local/nginx/conf/nginx.con

upstream    web {ip_hash;server 192.168.1.10}
upstream    apache {ip_hash;server 192.168.1.11}

在定义server的时进行location规则判断

server{
listen        80;
server_name   192.168.1.100;   (分发主机)
location/ {if( $http_user_agent ~* Elinks ) {proxy_pass http://web; #来自Elinks浏览器的请求,交给web来处理
}if( $http_user_agent ~* Mozilla ) {proxy_pass http://apache;
#来自Mozilla类型的浏览器的请求,交给apache处理,IE和火狐都属于Mozilla
}
}
}

2、基于开发语言的分发

这里开发语言环境的部署,祥看我这篇文章“http://cuimk.blog.51cto.com/6649029/1335770”

常见开发语言的后缀aspaspx php jsp html,为了将不同语言开发的程序交给特定的语言环境来执行,同样可以实现Nginx的location规则来实现

同样定义server时进行location规则判断

location~* \.php$ {proxy_pass http://192.168.1.250; #访问php结尾的,分发到250
}
location ~* \.jsp$ {proxy_pass http://192.168.1.251;  #访问jsp结尾的,分发到251
}
location / {root htmlindex index.html;     #访问其他的,请求本机
}

3、基于源地址的分发

像联通移动的网站,进去之后可以看到,你所进入的页面是你所在城市的页面,里面的信息很多是你当地退出的一些活动,这就是他们根绝你的IP地址来得知你当前所在位置,然后将请求分发到对应的服务器所实现的。

首先Nginx需要geoip模块,故编译添加

./configure–with-http_geoip_module

首先定义多个upstream

upstream bj.server{ip_hash;server 192.168.1.251  #定义bj的IP访问的服务器
}
upstream sh.server {ip_hash;server192.168.1.251   #定义sh的IP访问的服务器
}
upstream default.server {ip_hash;server 192.168.1.100  #定义其他地区访问的服务器
}

定义一个IP库

geo$geo {default default;192.168.18.0/24 bj;192.168.17.0/24 sh;   #定义bj和sh的IP段
}

在server里添加loscation规则

location/ {proxy_pass http://$geo.server$request_uri
}

这样会对不同的IP匹配IP库,看其属于哪个地区,然后在有针对性的将请求分发

4、基本IP轮询分发

配置十分简单,以两台RS做实验

将RS定义在一个upstream内

vim /usr/local/nginx/conf/nginx.conf

upstream web {ip_hash;server       192.168.18.250;   server       192.168.18.251;   #两台RS
}

在定义server的时候来指定其访问的模块,有多台机器的会默认轮询访问,当然可以自定义访问权重。

server {listen        80;           #监听80端口server_name   localhost;    #域名location/ {proxy_pass http://web;      #协议,模块名
}
}

我在定义upstream的时候都添加了一句“ip_hash;”这里是算法,使用ip哈希的算法,让来自同一台的清楚只交给后端同一台RS来处理,算法有很多,可以自行谷歌了解一下


配置限速

限速也是通过location规则实现的

首先需要在http里指定最大带宽(比如说是10M)

limit_zoneone $binary_remote_addr     10M;

然后在server添加location规则

location/ {root               html;index              index.html index.htm;limit_rate         10k;        #限速多少limit_rate_after   100k;       #下载多少的时候开始限速limit_connone 2;               #同一IP同时只能下载两个
}


防盗链配置

防盗链原理也是通过location规则实现的

1、指定文件的防盗链

location~*.(gif|jpg|png|swf|flv)$  {       #针对哪些文件格式进行防盗链                                 root/usr/local/nginx/html;valid_referersnone blocked baidu.com;  #只允许baidu连接if($invalid_referer) {rewrite ^/ http://192.168.1.241/1.jpg;  #盗链访问重定向到的地址
}
}

2、针对目录防止盗链

location /p_w_picpaths/ {alias /data/p_w_picpaths/;valid_referers none blocked server_names *.xok.la xok.la ;if ($invalid_referer) {return 403;}
}

还有就是可以通过ngx_http_accesskey_module模块实现防盗链,比较少用

未完。。。

转载于:https://blog.51cto.com/cuimk/1243466

详解Nginx的功能策略配置相关推荐

  1. 详解Nginx SSL快速双向认证配置(脚本)

    这篇文章主要介绍了详解Nginx SSL快速双向认证配置(脚本),现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 目前遇到一个项目有安全性要求,要求只有个别用户有权限访问.本着能用配置解决就 ...

  2. 从一份配置清单详解Nginx服务器配置

    概述 在前面<Nginx服务器开箱体验> 一文中我们从开箱到体验,感受了一下Nginx服务器的魅力.Nginx是轻量级的高性能Web服务器,提供了诸如HTTP代理和反向代理.负载均衡.缓存 ...

  3. 大型企业网络配置系列课程详解(五) --Frame-Relay配置与相关概念的理解

    大型企业网络配置系列课程详解(五)             --Frame-Relay配置与相关概念的理解   实验原理: Frame-Relay(帧中继)简称FR,是国际电信联盟通信标准化组(ITU ...

  4. 详解 nginx 配置文件及构建 web 虚拟主机

    详解 nginx 主配置文件.添加服务及构建 web 虚拟主机 一.添加为系统服务 1.方法一 2.方法二 二.nginx 主配置文件 nginx.conf 1.全局配置 2.I/O 事件配置 3.H ...

  5. 详解ZStack高级功能--裸金属服务

    详解Zstack高级功能--裸金属服务 一.前言 今天我们来了解一下ZStack的裸金属,提到裸金属服务,很多人从字面上可能对其不是很了解,其实早在之前的私有云OpenStack平台,就已经推行了Ir ...

  6. 详解nginx服务器绑定域名和设置根目录的方法

    主要介绍了详解nginx服务器绑定域名和设置根目录的方法,nginx服务器绑定域名以及设置根目录非常方便,小 编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 nginx服务器 ...

  7. iis7 php 403,详解Nginx 出现 403 Forbidden 的解决办法

    本篇文章主要介绍了详解Nginx 出现 403 Forbidden 的解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 Nginx 也是当前流行的一款 轻量级服务器 ...

  8. linux下nginx启动不了,详解Nginx启动失败的几种错误处理

    使用Nginx做Web服务器过程中,碰到过以下几个问题: 1.nginx启动失败 启动nginx失败,报错信息如下: Starting nginx: nginx: [emerg] bind() to ...

  9. python策略模式包含角色_详解Python设计模式之策略模式

    虽然设计模式与语言无关,但这并不意味着每一个模式都能在每一门语言中使用.<设计模式:可复用面向对象软件的基础>一书中有 23 个模式,其中有 16 个在动态语言中"不见了,或者简 ...

最新文章

  1. 基于python的手写数字识别knn_KNN分类算法实现手写数字识别
  2. opencl track资料整理
  3. Programming Computer Vision with Python (学习笔记一)
  4. Python机器学习算法 — 逻辑回归(Logistic Regression)
  5. python朋友圈评论_利用Python实现朋友圈中的九宫格图片效果
  6. 1-100之间的奇数
  7. c通过位运算求绝对值_初中数学归类总结(四)有理数的乘除乘方及混合运算...
  8. mysql sample函数_SAMPLE函数
  9. Python 函数的嵌套
  10. 短信api接口的一些使用建议
  11. 火狐浏览器代理设置:
  12. 2020大学研究生计算机排名,美国大学研究生计算机专业排名2020情况如何?
  13. Unity 用什么IDE比较好?
  14. java单链表选票_200个经典C程序源码
  15. [Java]jhsdb查看内存内Java对象
  16. python编写判断素数的函数并找出前五个摩尼森数_五十八、如何对一个数进行分解质因数...
  17. html5 文字滑动效果,jQuery滑动文字特效
  18. 红旗7linux安装教程,红旗Linux7.0硬盘安装简明教程
  19. Android桌面管理
  20. HMC 命令行 查看小型机信息命令大全

热门文章

  1. python学习之老男孩python全栈第九期_day024知识点总结——单继承、多继承
  2. 剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段
  3. 马云乌镇致辞:技术革命最终应该机器更像机器、人更像人
  4. 查看aix下安装并升级的C/C++ compiler 的版本
  5. 2016年最酷的十大安全初创公司
  6. 深入理解深度学习中的【卷积】和 feature map
  7. 【To Understand!回文串8 哈希表】LeetCode 336. Palindrome Pairs
  8. TCP握手协议的巧计方法
  9. JS If...Else
  10. jQuery实现手风琴效果