当前位置: 首页 > news >正文

Docker NGINX 加载Geoip模板

前提环境:

  • Docker 环境

涉及参考文档:

  • ngx_http_geoip_module 模块
  • Loki NGINX Service Mesh
  • GeoIP IP库

一、下载GeoIP IP库

在这里插入图片描述

二、配置Nginx主配置文件

vim /data/nginx/MangoMoh/dos/nginx.conf
user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;load_module modules/ngx_http_geoip_module.so;   #加载geoip模块
load_module modules/ngx_stream_geoip_module.so; #加载geoip模块events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;geoip_country /var/log/nginx/geoip/GeoCountry.dat; #数据放在日志文件一起挂载进行。实际个人自定义即可geoip_city    /var/log/nginx/geoip/GeoCity.dat;geoip_proxy 0.0.0.0/0;geoip_proxy_recursive on;log_format main escape=json '{''"msec": "$msec", ' # 以秒为单位的时间,日志写入时分辨率为毫秒'"connection": "$connection", ' # 连接序列号'"connection_requests": "$connection_requests", ' # ���过连接发出的当前请求数'"pid": "$pid", ' # process pid'"request_id": "$request_id", ' # the unique request id'"request_length": "$request_length", ' # 请求长度(包括请求行、标头和请求正文)'"remote_addr": "$remote_addr", ' # 客户地址'"remote_user": "$remote_user", ' # 身份验证提供的用户名'"remote_port": "$remote_port", ' # 客户端端口'"time_local": "$time_local", '   # 通用日志格式的本地时间'"time_iso8601": "$time_iso8601", ' # ISO 8601 标准格式的本地时间'"request": "$request", ' # 完整的原始请求行'"request_uri": "$request_uri", ' # 完整的原始请求 URI(带参数)'"args": "$args", ' # 请求行中的参数'"status": "$status", ' # 响应状态'"body_bytes_sent": "$body_bytes_sent", ' # 发送到客户端的字节数,不计算响应标头;'"bytes_sent": "$bytes_sent", ' # 发送到客户端的字节数'"http_referer": "$http_referer", ' # 防盗链'"http_user_agent": "$http_user_agent", ' # user agent'"http_x_forwarded_for": "$http_x_forwarded_for", ' # 访问真实IP'"http_host": "$http_host", ' # 官方未找到,具体使用需要验证'"server_name": "$server_name", ' # 接受请求的服务器的名称'"request_time": "$request_time", ' # 请求处理时间'"upstream": "$upstream_addr", ' # 上游服务器,保留 IP 地址和端口'"upstream_connect_time": "$upstream_connect_time", ' # 保留与上游服务器建立连接所花费的时间'"upstream_header_time": "$upstream_header_time", ' # 保持时间 用于从上游服务器接收响应标头'"upstream_response_time": "$upstream_response_time", ' # 保留从上游服务器接收响应所花费的时间'"upstream_response_length": "$upstream_response_length", ' # 保留从上游服务器获得的响应长度'"upstream_cache_status": "$upstream_cache_status", ' # 保持访问响应缓存的状态'"ssl_protocol": "$ssl_protocol", ' # TLS protocol'"ssl_cipher": "$ssl_cipher", ' # TLS cipher'"scheme": "$scheme", ' # 请求方式'"request_method": "$request_method", ' # 请求方式'"server_protocol": "$server_protocol", ' # 请求协议'"pipe": "$pipe", ' # "p" if request was pipelined, "." otherwise'"gzip_ratio": "$gzip_ratio", ''"http_cf_ray": "$http_cf_ray",''"geoip_country_code": "$geoip_country_code", ''"geoip_city": "$geoip_city"''}';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;include /etc/nginx/conf.d/*.conf;
}

三、配置子NGINX 配置文件

vim /data/nginx/web.conf
server {listen       80;listen  [::]:80;server_name $host;root   /usr/share/nginx/html;index  index.html;gzip on;gzip_buffers 32 4k;gzip_comp_level 6;gzip_min_length 200;gzip_types text/css text/xml application/javascript;gzip_vary on;server_tokens off; expires 1d;access_log  /var/log/nginx/website.access.log  main;error_log   /var/log/nginx/website.error.log;# 请求到入口页面location /myip {default_type text/plain;set_real_ip_from 0.0.0.0/0;real_ip_header X-Real-IP;real_ip_recursive on;return 200 "$remote_addr $geoip_country_name $geoip_country_code $geoip_city";}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}
}

四、启动Docker 容器

docker run -d  --name=nginx \
-v /data/nginx/web.conf:/etc/nginx/conf.d/default.conf \
-v /data/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /data/docker_logs/web:/var/log/nginx \
-p 80:80 \
nginx:latest

五、访问测试

1、查看Web:

https://IP/myip

在这里插入图片描述

2、查看日志:

在这里插入图片描述

3、查看Grafana:

在这里插入图片描述

相关文章:

Docker NGINX 加载Geoip模板

前提环境: Docker 环境 涉及参考文档: ngx_http_geoip_module 模块Loki NGINX Service MeshGeoIP IP库 一、下载GeoIP IP库 二、配置Nginx主配置文件 vim /data/nginx/MangoMoh/dos/nginx.confuser nginx; worker_processes auto;error_log /var…...

springboot基于协同过滤算法商品推荐系统

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器&…...

基于机器学习算法:朴素贝叶斯和SVM 分类-垃圾邮件识别分类系统(含Python工程全源码)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境安装pytesseract注册百度云账号 模块实现1. 数据模块2. 模型构建3. 附加功能 系统测试1. 文字邮件测试准确率2. 网页测试结果 工程源代码下载其它资料下载 前言 本项目采用朴素贝叶斯和支持向量机(S…...

在Linux下将PNG和JPG批量互转的四种方法

计算机术语中,批处理指的是用一个非交互式的程序来执行一序列的任务的方法。这篇教程里,我们会使用 Linux 命令行工具,并提供 4 种简单的处理方式来把一些 .PNG 格式的图像批量转换成 .JPG 格式的,以及转换回来。 计算机术语中&a…...

Scala中使用 break 和 continue

Scala中没有 break 和 continue 关键字,但是我们可以用 Breaks 类提供的相应方法来实现对应功能。 在Java中,break continue return的区别 1、break:break不仅可以结束其所在的循环,还可结束其外层循环,但一次只能结束…...

【全栈开发指南】打包sentinel-dashboard镜像推送到Docker Hub镜像仓库

在使用sentinel-dashboard的时候,发现官方并没有把jar包发布到Docker Hub镜像仓库,所以,我们需要自己手动将需要版本的sentinel-dashboard.jar发布到Docker Hub镜像仓库。首先需要在Docker Hub镜像仓库网站 https://hub.docker.com/ 上注册账…...

【数据可视化】SVG(一)

一、邂逅SVG和初体验 什么是SVG  SVG全称为(Scalable Vector Graphics),即可缩放矢量图形。(矢量定义:既有大小又有方向的量。在物理学中称作矢量,如一个带箭头线段:长度表示大小&#xff0…...

linux 系统errno 对应参考及代码

结论 linux下系统errno都有对应的说明描述&#xff0c;发生错误时获取errno即可知道具体问题描述 如下图 代码如下 golang版 package main import ("syscall""strings""fmt" ) func main() {for i : 0; i < 200; i {if !strings.HasPrefi…...

PowerShell快速ssh

文件 ~/.ssh/config 内容 Host masterHostName 192.168.10.154User root访问 $ ssh master 效果 进阶 免密的方式ssh 本地生成秘钥 ssh-keygen输入文件名称然后两次回车&#xff0c;完成后&#xff0c;在~/.ssh目录下会生成my_rsa和 my_rsa.pub两个文件 linux服务器上…...

从php5.6到golang1.19-文库App性能跃迁之路

作者 | 百度文库App 导读 本文深入浅出地分享了百度文库App服务端技术栈从PHP迁移至Go的实战经验&#xff0c;包含了技术选型、基础建设、流量迁移的具体方案&#xff0c;以及核心项目案例的重构实践。 全文6209字&#xff0c;预计阅读时间16分钟。 01 动机 长期以来&#xff…...

成功解决 AttributeError: ‘Field‘ object has no attribute ‘vocab‘

最近复现代码过程中&#xff0c;需要用到 torchtext.data 中的 Field 类。本篇博客记录使用过程中的问题及解决方式。 注意 torchtext 版本不宜过新 在较新版本的 torchtext.data 里面并没有 Field 方法&#xff0c;这一点需要注意。 启示&#xff1a;在复现别人代码时&#…...

ikbc键盘2.4G接收器丢失,重新对码

我的键盘&#xff1a;ikbc W200 1.键盘关掉重开&#xff1b; 2.新接收器插在电脑上&#xff1b; 3.电脑上打开软件&#xff0c;点开始对码&#xff0c;一会就连接上了。 对码软件放在这里&#xff1a; 我用夸克网盘分享了「IKBC 对码.rar」&#xff0c;点击链接即可保存。打开…...

STM32 Proteus仿真医用仓库环境控制系统紫外线消毒RS232上传CO2 -0066

STM32 Proteus仿真医用仓库环境控制系统紫外线消毒RS232上传CO2 -0066 Proteus仿真小实验&#xff1a; STM32 Proteus仿真医用仓库环境控制系统紫外线消毒RS232上传CO2 -0066 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD1602显示器DHT11温度湿度电位器模拟…...

Docker(二)之容器技术所涉及Linux内核关键技术

容器技术所涉及Linux内核关键技术 一、容器技术前世今生 1.1 1979年 — chroot 容器技术的概念可以追溯到1979年的UNIX chroot。它是一套“UNIX操作系统”系统&#xff0c;旨在将其root目录及其它子目录变更至文件系统内的新位置&#xff0c;且只接受特定进程的访问。这项功…...

计算机网络_ 1.3 网络核心 (数据交换_电路交换)

计算机网络_数据交换_电路交换 计算机网络_数据交换_电路交换 计算机网络_数据交换_电路交换 最典型电路交换网络&#xff1a;电话网络电路交换的三个阶段 建立连接&#xff08;呼叫/电路建立&#xff09;通信释放连接&#xff08;拆除电路&#xff09; 独占资源 电路交换网络…...

Kafka高性能集群部署与优化

Kafka高性能集群部署与优化 一、简介1. 基本概念2. Kafka生态系统 二、Kafka集群部署1. Kafka节点规划2. 集群环境准备3. 集群容错设计原则 三、Kafka高性能优化1. 硬件优化CPU优化内存优化磁盘IO优化 2. Kafka参数配置优化Broker配置Producer配置Consumer配置 3. 数据压缩和批…...

Lucene介绍与入门使用

https://github.com/apache/lucene Lucene简介 Lucene是apache软件基金会4 jakarta项目组的一个子项目&#xff0c;是一个开放源代码的全文检索引擎工具包&#xff0c;但它不是一个完整的全文检索引擎&#xff0c;而是一个全文检索引擎的架构&#xff0c;提供了完整的查询引擎…...

【最短路+状压】CF1846 G

Problem - G - Codeforces 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>//#define int long longusing namespace std;const int mxn1e610; const int mxv1e610; const int mxe2e310; const int mod1e97; const int Inf0x3f3f3f3f;stru…...

vue+elementui实现英雄联盟道具城

目录 一、效果图 1.首页 2.商品列表、分类 二、实现重点讲解 1.首页轮播图 1.1技术实现&#xff1a; 1.2.鼠标聚焦切换图片事件 2.首页tab切换 3.商品列表实现 三、项目结构说明 四、总结 一、效果图 1.首页 项目与官方效果没有太大差异&#xff1a; 游戏导航&#xff1…...

ruby注释

在Ruby中&#xff0c;可以使用以下两种方式进行注释&#xff1a; 1. 单行注释&#xff1a;使用井号&#xff08;#&#xff09;在代码行的开头添加注释。例如&#xff1a; # 这是一个单行注释 puts "Hello, World!" 2. 多行注释&#xff1a;使用begin和end将多行注…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...