首页
运维部署
苹果MAC系统
Kubernetes(K8S)
nginx 使用geo模块识别ip归属地做跳转
Docker
Docker部署Uptime Kuma
多媒体类
NGINX + OBS = 网页直播服务搭建
CentOS 7部署DNS服务器BIND
监控告警
prometheus(一、基础使用)
Prometheus(二、用snmp监控)
Grafana(1、部署+使用)
Grafana(2、snmp交换机仪表盘自定义)
prometheus_Alertmanager(三、报警配置_邮件)
prometheus_Alertmanager(四、企微 钉钉 告警)
prometheus_blackbox(五、黑盒监测 )
Pushgateway-客户端主动推送告警
snmp_exporter快速监控交换机
多个Prometheus实例互联
exporter自定义监控项
PC
服务器
Dell 服务器R540做raid
服务器电源供电
更换raid阵列卡
企业微信
企业微信api使用
centos7中yum安装dnsmasq内网dns
centos7部署ntopng
Syslog 日志存储
IT-数据恢复
OpenVPN
JumpServer分布式部署
Gitlab
ansible常用命令
将pem证书转换为crt和key
CentOS 7 中搭建ocserv
ocserv相关收藏
ocserv服务器配置实例
ocserv客户端无法将网络共享给其它终端
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
nginx 使用geo模块识别ip归属地做跳转
## 安装 Nginx ``` yum install nginx systemctl start nginx systemctl enable nginx systemctl status nginx [root@localhost ~]# rpm -qa | grep nginx nginx-1.20.1-10.el7.x86_64 nginx-filesystem-1.20.1-10.el7.noarch sudo firewall-cmd --list-ports firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload ``` ## 配置 Nginx 步骤: 在nginx.conf中添加geo配置的文件指向ipv4geo.conf ``` geo $country { default CN; include /etc/nginx/conf/ipv4geo.conf; } ``` ipv4geo.conf文件里面内容 ``` # 这里面只是一个示例,具体全球ip列表需要自己整理,后续会专门出一篇博客来介绍,实现从全球五大机构获取ip的国家 124.246.0.0/21 AU; 124.246.8.0/21 AU; 124.246.16.0/21 AU; 124.246.24.0/21 AU; 124.246.32.0/19 AU; 124.246.64.0/18 SG; 124.246.128.0/17 JP; 124.247.0.0/17 JP; 124.247.128.0/18 JP; 124.247.192.0/18 IN; 124.248.0.0/17 CN; ``` 在nginx.conf中的server模块添加if判断 ``` server { listen 9090; server_name 47.103.131.5; location / { if ($country = "CN"){ rewrite ^(.*) https://www.csdn.com$1 permanent; } if ($country = "US"){ rewrite ^(.*) https://www.baidu.com$1 permanent; } add_header Content-Type text/plain; return 200 '$remote_addr\n$country'; } } ``` 最终相关配置: cat nginx.conf文件 # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; geo $country { default CN; include /etc/nginx/conf/ipv4geo.conf; } server { listen 80; location / { if ($country = "CN"){ rewrite ^(.*) https://www.csdn.com$1 permanent; } if ($country = "AU"){ #rewrite ^(.*) https://www.baidu.com$1 permanent; return 500 '$remote_addr\n$country'; } if ($country = "SG"){ #return 200 '$remote_addr\n$country'; return 500 '$remote_addr\n$country'; } add_header Content-Type text/plain; return 200 '$remote_addr\n$country'; } } 检查配置语法:更改配置后,使用nginx t命令检查配置文件的语法是否正确。 重新加载Nginx:无误后,使用nginx s reload命令重新加载Nginx,使配置立即生效。 `nginx -s reload` 参考: nginx geo模块使用 nginx识别ip归属地做跳转 https://zhuanlan.zhihu.com/p/677121491 请注意,geo模块的使用需要谨慎,尤其是在复杂的应用场景中,因为在if语句内使用它可能会导致性能问题。在实际使用中,建议考虑使用其他更高效的Nginx模块或者将相关逻辑移到应用层处理。 # 参考二: ``` Nginx的Geo模块用于自动定义一个变量,该变量的值基于客户端IP地址的物理位置。这可以用于进行地理区域的内容分发,负载均衡,或者其他基于地理位置的需求。 以下是一个简单的Geo模块配置示例,它定义了两个变量$country和$city,然后在server块中使用这些变量来进行条件配置: http { geo $country { default ZZ; # 美国 1.2.3.4 US; 5.6.7.0/24 US; # 加拿大 8.8.8.8 CA; } geo $city { default default; 1.2.3.4 New York; 5.6.7.10 Los Angeles; } server { listen 80; server_name localhost; location / { if ($country = US) { # 如果访问者来自美国,则返回特定内容 return 200 'Welcome to the US!'; } if ($country = CA) { # 如果访问者来自加拿大,则返回特定内容 return 200 'Welcome to Canada!'; } # 默认行为 return 200 'Welcome to $city, $country!'; } } } 在这个配置中,如果访问者的IP地址在定义的范围内,则$country变量会被设置为US或CA。如果IP地址匹配了特定的地址(如1.2.3.4),则$city变量会被设置为相应的城市名称。在server块中,根据$country和$city变量的值,可以执行不同的操作,例如内容过滤或者条件重定向。 怎么使用Nginx_geo模块实现CDN调度 https://www.yisu.com/ask/78252043.html nginx模块开发 nginx geo模块 https://blog.51cto.com/u_16213589/10290303 CNNIC IP地址注册信息查询系统 您可以查到CNNIC及中国大陆的IP地址分配信息 https://ipwhois.cnnic.net.cn/index.jsp icp备案查询网 地址:https://beian.miit.gov.cn/ 信息收集笔记 https://blog.csdn.net/biu801/article/details/143030960 ```
local
2024年11月20日 19:02
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码