阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

详解Nginx的功能策略配置

479次阅读
没有评论

共计 4406 个字符,预计需要花费 12 分钟才能阅读完成。

负载均衡(做分发服器)
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 html
index index.html;    #访问其他的,请求本机
}

3、基于源地址的分发
像联通移动的网站,进去之后可以看到,你所进入的页面是你所在城市的页面,里面的信息很多是你当地退出的一些活动,这就是他们根绝你的 IP 地址来得知你当前所在位置,然后将请求分发到对应的服务器所实现的。
首先 Nginx 需要 geoip 模块,故编译添加
1 ./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/24bj;
192.168.17.0/24sh;  #定义 bj 和 sh 的 IP 段
}

在 server 里添加 loscation 规则

123 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://www.linuxidc.com/retrun.html; #盗链访问重定向到的地址
 #return 403;
}
}

第一行:gif|jpg|png|swf|flv
表示对 gif、jpg、png、swf、flv 后缀的文件实行防盗链
第二行:表示对 www.88181.com 这 2 个来路进行判断
if{}里面内容的意思是,如果来路不是指定来路就跳转到 http://www.linuxidc.com/retrun.html 页面,当然直接返回 403 也是可以的。
 

2、针对目录防止盗链

12345 location /images/{
alias/data/images/;
valid_referers none blocked server_names *.xok.la xok.la ;
if($invalid_referer) {return403;}
}

 

3. 通过 ngx_http_accesskey_module 模块实现防盗链,比较少用
实现方法如下:
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 构成的字符串。

访问测试脚本 download.php:
<?
$ipkey= md5(“mypass”.$_SERVER[‘REMOTE_ADDR’]);
$output_add_key=”<a href=http://www.linuxidc.com/download/G3200507120520LM.rar?key=”.$ipkey.”>download_add_key</a><br />”;
$output_org_url=”<a href=http://www.linuxidc.com/download/G3200507120520LM.rar>download_org_path</a><br />”;
echo $output_add_key;
echo $output_org_url;
?>
访问第一个 download_add_key 链接可以正常下载,第二个链接 download_org_path 会返回 403 Forbidden 错误。

他的运行方式是:如我的 download 目录下有一个 file.zip 的文件。对应的 URI 是 http://www.linuxidc.com/download/file.zip
使用 ngx_http_accesskey_module 模块后 http://www.linuxidc.com/download/file.zip?key=09093abeac094. 只有给定的 key 值正确了,才能够下载 download 目录下的 file.zip。而且 key 值是根据用户的 IP 有关的,这样就可以避免被盗链了。

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

相关阅读

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4406字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7995059
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...