Docker NGINX 加载Geoip模板

news2024/10/7 17:25:10

前提环境:

  • 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:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/742398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ncnn源码阅读(三)----数据结构Mat

文章目录 数据结构Mat成员变量成员方法构造函数1、普通构造函数2、外部数据指针构造函数3、拷贝构造函数和opertor 深拷贝函数类型转换引用计数的实现其他数据操作函数 数据结构Mat 个人认为一个框架中的比较核心的两个点,一个是数据结构,一个任务调度…

STM32F407ZGT6正点原子F4探索者开发板 -- 跑马灯例程

1. USB 转USART1 烧录工具 FlyMcu 2. FlyMcu 配置 3. 查看开发板原理图,LED0、LED1 硬件连接 LED0 - PF9 LED1 - PF10 PF9 0, LED0 亮,PF9 1,LED0 灭 PF10 0, LED1 亮,PF10 1,LED1 灭 4.…

cesium 实现多颗卫星与多颗地面站雷达通信效果

最主要的部分是计算空间内两点之间的距离以及卫星对地点是否在雷达扫描范围内 先看效果 1.计算空间内两点之间的距离 //计算距离 function distance(point1, point2) {var point1cartographic = Cesium.Cartographic.fromCartesian(point1);var</

医师访问学者申请需要注意什么?

医师访问学者申请是医学领域中一项重要的学术交流和合作方式。在准备申请时&#xff0c;有几个关键点需要注意&#xff0c;下面就随知识人网小编一起来看一看。 1. 目标和动机&#xff1a;明确访问学者的目标和动机&#xff0c;例如学术研究、专业发展、文化交流等。清楚表达你…

产品经理学习画原型-登录界面(交互样式设置)

经过第一阶段学习&#xff0c;目前效果如下&#xff1a; 下面我们来加入交互样式效果&#xff1a; 效果&#xff1a;

[SSM]MyBatis的缓存与逆向工程

目录 十三、MyBatis的缓存 13.1一级缓存 13.2二级缓存 13.3MyBatis集成EhCache 十四、MyBatis的逆向工程 14.1逆向工程配置与生成 14.2测试 十三、MyBatis的缓存 缓存&#xff1a;cache 缓存的作用&#xff1a;通过减少IO的方式&#xff0c;来提高程序的执行效率。 myb…

【分布式】 ELK 企业级日志分析系统 二

目录 一、FilebeatELK 部署1.1 环境部署 二、grok 正则捕获插件mutate 数据修改插件multiline 多行合并插件date 时间处理插件 一、FilebeatELK 部署 1.1 环境部署 Node1节点&#xff08;2C/4G&#xff09;&#xff1a;node1/192.168.137.101 Elasticsearch Node2节点&…

【C++顺序容器】forward_list的成员函数和非成员函数

目录 forward_list 1. forward_list的成员函数 1.1 构造、析构和赋值运算符重载 1.1.1 构造函数 1.1.2 析构函数 1.1.3 赋值运算符重载 1.2 迭代器 1.3 容量 1.4 元素访问 1.4.1 遍历方法 1.5 修改器 1.6 操作 1.7 观察者 2. forward_list的非成员函数 forward_l…

npm5中本地间模块引用的最好方式(附带引用方法总结)

引用其他的包 正常情况下在项目 package.json 所在的目录&#xff08;一般也是项目根目录&#xff09;运行npm install xxxx 命令之后&#xff0c;会从远程或者代理地址下载xxxx包到node_modules&#xff0c;然后在package.json生成对应的包名和版本 如果想要依赖本地自己开发…

TypeScript 学习笔记(一):类型

文章目录 一、常见类型1. 数组2. 布尔3. 数值4. 字符串5. object6. null 和 undefined7. symbol7.1 作为属性名7.2 属性名遍历7.3 静态方法&#xff1a;Symbol.for()和 Symbol.keyFor()7.4 内置 symbol 值7.4.1 Symbol.hasInstance7.4.2 Symbol.isConcatSpreadable7.4.3 Symbol…

第四十五章Java 接口

Java 接口 接口&#xff08;英文&#xff1a;Interface&#xff09;&#xff0c;在JAVA编程语言中是一个抽象类型&#xff0c;是抽象方法的集合&#xff0c;接口通常以interface来声明。一个类通过继承接口的方式&#xff0c;从而来继承接口的抽象方法。 接口并不是类&#x…

DevOps(二)

CD 1. 平台选择2. 技术选型3. 阶段性目标4. 搭建示例4.1 环境准备(节点机)1. java版本升级2. 编译安装git3. docker安装4. docker-compose安装5. sonarqube安装6. harbor安装7. gitlab私服 4.2 示例一&#xff08;手动&#xff09;1. 创建项目2. 编码3. Dockerfile4. 拷贝pytho…

【linux】线程详解

线程 线程的概念 在官方书籍对于线程的概念&#xff1a; 1.在进程内部的执行流 2.线程比进程粒度更细&#xff0c;调度成本更低。 3.线程是CPU调度的最小单位。 线程&#xff08;tcb&#xff09;&#xff1a;进程&#xff08;pcb&#xff09; n&#xff1a;1 进程和线程在执…

Java 动态规划 面试题 17.16. 按摩师

代码展示&#xff1a; class Solution {public int massage(int[] nums) {int nnums.length;if(n0){return 0;}//创建数组int f[]new int[n]; //f[i]表示接i位置的最长时间int g[]new int[n]; //g[i]表示不接i位置的最长时间//初始化f[0]nums[0];g[0]0;//填充数组for(int i1;i…

VectorCAST单元测试手动配置测试用例

一、单元测试 等待环境创建完成后&#xff0c;就可以开始单元测试。 二、生成测试用例 在 VectorCAST 中&#xff0c;一共有两种方法来生成测试用例&#xff0c;一种是手动生成测试用例&#xff0c;另外一种是自动 生成测试用例。 三、手动生成测试用例 在 VectorCAST 中&a…

《面试1v1》Redis分布式锁

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

泛微E-Cology SQL注入漏洞复现(QVD-2023-15672)

0x01 产品简介 泛微协同管理应用平台e-cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。 0x02 漏洞概述 由于泛微e-cology未对用户的输入进行有效的…

matlab学习指南(2):安装工具箱Toolbox的方法(详细图解)

&#x1f305;*&#x1f539;** φ(゜▽゜*)♪ **&#x1f539;*&#x1f305; 欢迎来到馒头侠的博客&#xff0c;该类目主要讲数学建模的知识&#xff0c;大家一起学习&#xff0c;联系最后的横幅&#xff01; 喜欢的朋友可以关注下&#xff0c;私信下次更新不迷路&#xff0…

【项目 进程1】2.1 进程概述 2.2 进程状态转换

文章目录 2.1进程概述程序和进程**时间片****并行和并发****进程控制块(PCB)** 2.2进程状态转换**进程的状态** **进程相关命令****实时显示进程动态** 2.1进程概述 程序和进程 程序是包含一系列信息的文件&#xff0c;这些信息描述了如何在运行时创建一个进程&#xff1a; …

Linux的软链接与硬链接

Linux的软链接与硬链接 1&#xff0c;创建硬链接&#xff1a;2&#xff0c;创建软链接&#xff1a;3&#xff0c;软链接是什么4&#xff0c;软链接文件的权限5&#xff0c;硬链接是什么6&#xff0c;做个小实验 总结问题&#xff1a;为什么有软链接了&#xff08;快捷方式&…