Nginx IP地址较少时如何合理分配后端服务资源
Nginx IP地址较少时如何合理分配后端服务资源
背景
客户系统很多时候会通过网闸或者是VPN登录到产品内
此时的IP地址一般是相同的.
这种情况下较难实现根据ip地址使用ip_hash的方式将压力分散到不同的服务器上面.
想到之前有很多应用喜欢根据浏览器来判断是否符合需求
不符合需求就给出提示, 避免使用起来有问题.
想着也可以使用这种方法对应用进行切分. 所以总结了一下.
同事思路
同事一开始从网上找了一个 denied 和 allow 的方式
但是nginx有一个匹配后的处理过程
匹配到denied 可能就直接返回 不就行走了,
所以会导致不符合预期的情况
根据remote_addr进行处理.
思路:
使用 remote_addr 进行判断
如果属于地址范围 则进行一下处理
如果不属于再进行另外的域名站点
需要注意nginx 其实不支持 if else的语法
需要先定义一个变量.通过变量的方式进行设置处理.
nginx代码
worker_processes 1;
user root ;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
upstream A {
ip_hash ;
server 10.110.xx.xxx:5200;
}
upstream B {
ip_hash ;
server 10.110.yy.yyy:5200;
}
upstream C {
ip_hash ;
server 10.110.zz.zzz:5200;
}
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time';
access_log access.log main ;
client_header_timeout 600;
client_body_timeout 600;
client_max_body_size 300m;
proxy_send_timeout 600;
proxy_read_timeout 600;
proxy_buffer_size 1024k;
proxy_buffers 16 1024k;
proxy_busy_buffers_size 2048k;
proxy_temp_file_write_size 2048k;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 8;
gzip_types text/plain application/javascript text/css application/json text/javascript image/svg+xml image/png;
gzip_vary off;
server {
listen 88;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
set $is_matched 0;
if ( $remote_addr ~* "10.72.xx.xxx") {
set $is_matched 1;
proxy_pass http://A;
}
if ($remote_addr ~* "10.25") {
set $is_matched 1;
proxy_pass http://B;
}
if ( $is_matched = 0 ){
proxy_pass http://C;
}
}
}
}
Nginx IP地址较少时如何合理分配后端服务资源的更多相关文章
- 在nginx配置将请求转发到某个真实后端服务ip
一.打开nginx机器的nginx配置文件 命令: locate nginx.conf 会列出所有nginx.conf文件的地址, 一般咱们要用的nginx配置文件是/usr/local/nginx/ ...
- Nginx IP地址透传
L:119
- --with-http_realip_module选项(后台Nginx服务器记录原始客户端的IP地址 )
转自:http://blog.itpub.net/27043155/viewspace-734234/ 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如,X-Real-IP 或 X-For ...
- 计算机网络九:IP地址、子网掩码、默认网关、DHCP服务器、DNS服务器、WINS服务器
一.IP地址与子网掩码 1.IP地址 ipv4下,ip地址=网络号+主机号. 2.子网掩码 子网掩码(subnet mask)又叫网络掩码.地址掩码.子网络遮罩,它是一种用来指明一个I ...
- 通过DHCP动态管理IP地址
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP ...
- IP地址分类及CIDR划分方法
IP地址的分类和表示有三种形式,1.分类的IP地址.2.子网划分.3.无分类编址CIDR 1.分类的IP地址 IP地址:: = {<网络号>,<主机号>} 不同的网络号和主机号 ...
- 2-4-搭建DHCP服务实现动态分配IP地址-NTP网络时间同步
本节所讲内容: •DHCP服务器工作原理 •使用DHCP为局域网中的机器分配IP地址 •使用DHCP为服务器分配固定IP地址 •ntpdate加计划任务同步服务器时间 ---------------- ...
- 100.64.0.0/10运营商级(Carrier-grade)NAT保留IP地址
在一次跟踪路由的网络操作时发现自己路由器下一跳路由节点的IP地址比较奇怪,是100.64.0.1.好奇促使我查询了这个IP地址的归属,结果是保留地址,到这里觉得比较奇怪了,按照常理以IPv4为例保留的 ...
- IP地址-计算机网络
如需转载请联系:fengxw6@mail2.sysu.edu.cn 未经许可,禁止转载. ---Sun Yat-sen University 冯兴伟 1. MAC地址和IP地址都是全局的(全球分配) ...
- 重学计算机网络(二) - 曾记否,查IP地址
先献上几个梗 1.1.1.1 不是测试用的,原来一直没分配,现在被用来做一个DNS了,宣传是比谷歌等公司的dns服务 更保护用户隐私. IP地址255.255.255.255,代表有限广播,它的目标是 ...
随机推荐
- 《A Novel Table-to-Graph Generation Approach for Document-Level Joint Entity and Relation Extraction》阅读笔记
代码 原文地址 文档级关系抽取(DocRE)的目的是从文档中提取实体之间的关系,这对于知识图谱构建等应用非常重要.然而,现有的方法通常需要预先识别出文档中的实体及其提及,这与实际应用场景不一致 ...
- linux文件和文件夹的筛选、查找及用户和组管理命令
1.列出当前系统上所有已经登陆的用户的用户名, 注意:同一个用户登录多次,则只显示一次即可. 查看系统用户的命令为: (1)getent passwd 查看系统上的所有用户信息 (2)w 查看登录用户 ...
- 动态规划问题(三)最长递增子序列长度(LIS)
问题描述 有一个数组,它内部的顺序是乱序的,现在要求你找出该数组中的最长的递增子序列长度. 例如:对于数组 {10, 20, 9, 33, 21, 50, 41, 60, 80},它的最长递增 ...
- shared_preferences缓存
封装 import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; class JSpUtil ...
- 15、Flutter 按钮组件
按钮组件的属性 ButtonStylee里面的常用的参数 ElevatedButton ElevatedButton 即"凸起"按钮,它默认带有阴影和灰色背景.按下后,阴影会变大 ...
- java中获取公网IP
package com.dashan.utils.iputils; import org.apache.commons.lang.StringUtils; import java.io.Buffere ...
- 分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
前文再续,Go lang和Python一样,基础数据类型有着很多分类,分门别类,一应俱全.它们对应着不同的使用场景,分别是:整形.浮点.字符.字符串.布尔等等.常用的基本数据类型经常会参与日常业务逻辑 ...
- “绝影”机器狗如何利用ModelArts强化学习算法更改导航轨迹
摘要:利用ModelArts平台云端协同进行强化学习AI能力部署,导航机器狗绕开火焰关闭可燃气体开关灭火. 在刚刚结束的HC Keynote中,为大家演示了基于华为ModelArts和Atlas 20 ...
- PanGu-Coder:函数级的代码生成模型
摘要:华为诺亚方舟实验室语音语义实验室联合华为云PaaS技术创新实验室基于PanGu-Alpha研制出了当前业界最新的模型PanGu-Coder 本文分享自华为云社区<PanGu-Coder 函 ...
- 【“互联网+”大赛华为云赛道】API命题攻略:厘清三步解题思路,用好开发工具
摘要:结合华为云API开放平台API Exploer实现照片分类系统. API能为我们带来什么? 有了 API,可以创建管理云服务器.云容器.云硬盘,提高工作效率:可以接入图像识别.情感分析.内容审核 ...