通过nginx GeoIP模块来限制某些国家或者具体地区访问网站,在国内一般用于外贸站,因为很多外贸公司走货的价格关系,是不希望国内用户看见的。除了某些CDN或者付费接口之外,也可以通过本身的服务器来操作,或者浏览器判断等。我之前就是用浏览器来判断的,如果浏览器的语言是中文ZH,那么网站就跳转到不能访问的地址,这算是一个很粗暴的方法,但是有时候可能又需要用户稍微变通一下,让国内用户可以看见。那么这
转载
2024-09-23 10:31:13
52阅读
目录前言一、Go二、Nginx三、测试Go并发请求测试Python并发请求测试四、总结借鉴 前言很久都没出GO方面的文章了,自己都很久没玩了,很多东西都忘了,这次出个文章,使用Go+Nginx搭建一个可以实现高并发并且对请求做出限制功能的服务器。一、Go这里先搭建Go部分的环境,这个代码我自己div了一下Logger打印日志,可以自己随心所欲搭配打印,如果不需要自己div,图方便的可以使用gin
转载
2024-10-05 12:26:18
53阅读
文章目录安装依赖环境Nginx安装1. 下载2. 解压3. 配置安装信息4. 编译安装5. 启动命令命令启动停止从容停止快速停止强制停止所有nginx进程平滑重启 安装依赖环境一. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:yum -y install gcc gcc-c++ popt-devel openss
转载
2024-10-11 12:50:58
27阅读
一、nginx的介绍 nginx是由俄罗斯人开发的一款高性能的http和反向代理服务器,也可以用来作为邮件代理。相比较于其他的服务器,具有占用内存少,稳定性高等优势 二、nginx的配置 nginx的安装时配置文件默认在nginx程序安装目录的conf目录下,启动主配置文件默认为为nginx.conf安装的时候可以通
转载
2024-03-21 08:53:09
139阅读
Nginx的配置运行中Nginx进程间的关系# 为什么产品环境下安装master-worker方式配置同时启动多个进程?
- master进程不会对用户提供服务,只用于管理真正提供服务的worker进程,所以master进程可以是唯一的,为管理员 提供命令行服务,如启停、重载配置文件、平滑升级程序等。
master拥有的权限相对worker要大,当任意一个worker进程出现错误,master进程
一、ngx_http_geoip2_module模块简介 ngx_http_geoip2_module模块使用预编译的MaxMind数据库创建变量,其值取决于客户端 IP 地址 ,通过此模块我们可以精准的限制或者允许某个国家的IP地址访问WEB站点。MaxMind的GeoIP2和GeoLite2 IP智能产品和服务用于发现有关特定IP地址的信息。我们提供免费和付费网络服务、基于订阅的可下载数据库
geo指令使用ngx_http_geo_module模块提供的。默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module。 ngx_http_geo_module模块可以用来创建变量,其值依赖于客户端IP地址。geo指令语法: geo [$address] $variable { ... } 默认值: — 配置段: http 定义从指定的变量获取客户端的
转载
2024-04-01 22:09:49
656阅读
今天是元宵,祝大家元宵节快乐!在日常的工作中,我们会经常对应用进行发版升级,在互联网公司尤为频繁,主要是为了满足快速的业务发展。我们经常用到的发布方式有滚动更新、蓝绿发布、灰度发布。滚动更新:依次进行新旧替换,直到旧的全部被替换为止。蓝绿发布:两套独立的系统,对外提供服务的称为绿系统,待上线的服务称为蓝系统,当蓝系统里面的应用测试完成后,用户流量接入蓝系统,蓝系统将称为绿系统,以前的绿系统就可以销
转载
2024-01-31 01:18:35
72阅读
1.通过Ingress-nginx实现灰度发布场景一: 将新版本灰度给部分用户假设线上运行了一套对外提供 7 层服务的 Service A 服务,后来开发了个新版本 Service A’ 想 要上线,但又不想直接替换掉原来的 Service A,希望先灰度一小部分用户,等运行一段时间足够稳定 了再逐渐全量上线新版本,最后平滑下线旧版本。这个时候就可以利用 Nginx Ingress 基于 Head
转载
2024-02-19 11:12:59
274阅读
nginx.ingress.kubernetes.io/canary-by-header
基1于Header的流量切分,适用于灰度发布。如果请求头中包含指定的header名称,并且值为“always”,就将该请求转发给Canary Ingress定义的对应后端服务。如果值为“never”则不转发,可用于回滚到旧版本。如果为其他值则忽略该annotation,并通过优先级将请求流量分配到其他规则。
转载
2024-04-01 05:36:44
42阅读
nginx+lua+redis实现灰度发布:灰度发布是指在黑白之间能够平滑过渡的一种方式AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度发布可以保证应用系统的稳定,降低产品升级影响的用户范围;也可以按照
转载
2024-03-22 13:11:40
63阅读
由于业务需要,要做灰度发布测试,刚开始考虑通过IP来做判断,分发不同的后端,但是由于IP不好确定,有的客户端IP不固定,所以考虑用cookie来做逻辑很简单,如下图: 在nginx做这个很简单,两个方法,map或if首先看map怎么做为了模拟环境,我又不想多开服务器,所以起了个httpd,配置两个vhost,当作两个后端,如下: 我给这两个vhost,配置不同
转载
2024-04-07 13:12:44
95阅读
geo指令使用ngx_http_geo_module模块提供的。默认情况下,nginx有加载这个模块,除非人为的 –without-http_geo_module。ngx_http_geo_module模块可以用来创建变量,其值依赖于客户端IP地址。geo指令语法: geo [$address] $variable { … }默认值: —配置段: http定义从指定的变量获取客户端的IP地址。默认
转载
精选
2013-09-30 14:04:17
625阅读
# Nginx与Redis灰度发布
在软件开发过程中,灰度发布是一种常用的上线方式,通过渐进式地将新版本的功能发布给一部分用户,以降低风险并收集反馈。本文将介绍如何结合Nginx和Redis实现灰度发布的方式。
## Nginx
Nginx是一个高性能的Web服务器,也可以作为反向代理服务器使用。在灰度发布中,我们可以利用Nginx的反向代理功能,将请求分发给不同的后端服务。
下面是一个简
原创
2024-06-05 06:06:01
46阅读
目录一、什么叫灰度发布?二、配置文件以及lua脚本编写1、nginx.conf 添加两个灰度发布的环境 #client2 灰度环境地址 #client1生产环境地址2、gray.lua一、什么叫灰度发布?灰度发布,简单来说,就是根据各种条件,让一部分用户使用旧版本,另一部分用户使用新版本。 一般是产品上线一个功能,希望在线上可以进行A/B testin
前言 随着公司业务规模扩大,传统的架构已无法支撑业务量阶梯式的增长,应用发布也必须迎来调整。之前的发布方式,需要通过脚本切换nginx,然后通过ansible进行批量发布;由于业务的特殊性质,原有方案一旦上线代码出现bug或者人为出现操作失误,将导致大面积应用无法提供服务,为了避免故障发生造成毁灭性的后果,决定分布进行架构调整
转载
2024-01-04 06:12:06
113阅读
在nginx 配置目录中创建geo.conf配置文件,内容如下 geo $bad { default 0; include /opt/nginx/conf/vconf/ip_list.conf; } 创建ip_list.conf , 这个文件中是你要禁止访问的IP地址,内容如下: 100.7.289 ...
转载
2021-08-10 13:57:00
1047阅读
2评论
简介Nginx-ingress 是一个以 Nginx 为核心组件的 K8S 负载均衡工具,支持通过配置 Ingress 规则的 Annotations 来实现不同场景下的灰度发布和测试。Ingress Annotations 支持以下 4 种 Canary 规则:nginx.ingress.kubernetes.io/canary-by-header:基于 Request Header 的流量切分
使用场景过滤指定地区/国家的IP,一般是国外IP禁止请求。 使用geoip模块实现不同国家的请求被转发到不同国家的nginx服务器,也就是根据国家负载均衡。前置知识GeoIP是什么? 官网地址https://www.maxmind.com/en/home包含IP地址的地理位置的数据库。分为收费版本和免费版本 收费版本为GeoIP2,免费版本为GeoIPlitenginx plus版本,也就是收费版
nginx常用模块介绍 IP访问控制模块用来对特定IP的进行访问控制 默认是允许所有ip访问,若部分允许需定义 deny alllocation ~.*\.(sql|log|txt|jar|war|sh|py|php) {
deny all;
} 比如可以限制某些目录下的某些文件的访问,具体可以自己组合禁止访问所有目录下的 sql|log|txt|
转载
2024-07-26 07:46:29
124阅读