当前位置: 首页 > 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:

在这里插入图片描述

http://www.lryc.cn/news/94671.html

相关文章:

  • springboot基于协同过滤算法商品推荐系统
  • 基于机器学习算法:朴素贝叶斯和SVM 分类-垃圾邮件识别分类系统(含Python工程全源码)
  • 在Linux下将PNG和JPG批量互转的四种方法
  • Scala中使用 break 和 continue
  • 【全栈开发指南】打包sentinel-dashboard镜像推送到Docker Hub镜像仓库
  • 【数据可视化】SVG(一)
  • linux 系统errno 对应参考及代码
  • PowerShell快速ssh
  • 从php5.6到golang1.19-文库App性能跃迁之路
  • 成功解决 AttributeError: ‘Field‘ object has no attribute ‘vocab‘
  • ikbc键盘2.4G接收器丢失,重新对码
  • STM32 Proteus仿真医用仓库环境控制系统紫外线消毒RS232上传CO2 -0066
  • Docker(二)之容器技术所涉及Linux内核关键技术
  • 计算机网络_ 1.3 网络核心 (数据交换_电路交换)
  • Kafka高性能集群部署与优化
  • Lucene介绍与入门使用
  • 【最短路+状压】CF1846 G
  • vue+elementui实现英雄联盟道具城
  • ruby注释
  • 2023(WAIC)智能驾驶科技峰会丨拓数派大模型下的数据计算系统,助力汽车智能化产业数据增值
  • 牛客周赛 Round 2
  • Git 命令提交和分支控制
  • 2023 node 接入腾讯云短信服务,实现发送短信功能
  • Devops系列四(使用argocd部署java应用到k8s容器)
  • 如何在Microsoft Excel中进行不连续区域批量填充
  • k8s+springboot+CronJob 定时任务部署
  • Spring5 中更优雅的第三方 Bean 注入
  • Yolov5-Face 原理解析及算法解析
  • 通俗易懂讲解CPU、GPU、FPGA的特点
  • PIC18 DataRAM 笔记