运维
  • 知识体系
    • 运维体系
    • 缓存体系
    • 安全体系
  • 自动化
    • 服务器初始化
      • 用户操作记录监控
    • 自动化运维
      • 自动化生成域名信息
    • JAVA后端自动化构建发布
    • PHP-laravel自动化构建发布
    • EXE自动化构建发布(CocosCreator)
    • 前端自动化构建发布
    • 苹果自动化构建发布
    • 安卓自动化构建发布
      • VirtualBox 安卓自动化构建发布
      • Docker 安卓自动化构建发布
    • 项目自动化构建发布
    • 自动化下注
    • 常见下载器 docker 启动方式
  • 监控
    • 服务器负载监控
      • 监控CPU
      • 监控磁盘
      • 监控内存
    • 域名跳炸监控
    • serverstatus
    • 接口监控报警
    • zabbix监控部署
      • zabbix-dockerfile.sh
      • zabbix-install.sh
    • glances监控部署
      • glances.sh
      • glances_alert.sh
    • ssh 登录/登出监控
    • 文件变动监控
    • 宝塔时时监控域名
    • 飞书日志监控
    • 监控进程
  • 服务
    • go-install.sh
    • jenkins-install.sh
      • k8s.jenkins
    • redis-install.sh
      • k8s.redis
    • node-install.sh
      • k8s.node
    • nginx-install.sh
      • k8s.nginx
    • NGINX
      • nginx+GeoIP2模块编译
      • Nginx根据不同浏览器语言配置跳转
      • Nginx根据用户ip返回对应地区语言
      • nginx log 正则分析
      • 应对网站扫描/攻击/采集方法
    • 自建fiora聊天服务器
    • Laravel 部署
      • Laravel 部署:环境一键安装
      • Laravel 部署:Nginx 配置
      • Laravel 部署:文件夹权限
      • Laravel 部署:PHP-fpm 配置调优
      • Laravel 部署:服务器优化清单
    • ELK传统方式部署
    • ELK 分析nginx日志
    • GitLab迁移数据
  • 区块链
    • 区块链威胁情报共享平台
    • 以太坊公链私链geth同步
    • 比特节点同步
    • BTC节点错误解决方法
    • eth硬分叉
    • omni钱包节点搭建
    • 区块链钱包系统设计架构
  • Docker
    • Centos7
      • 安装docker
      • 安装redis
      • 搭建Nginx
      • 搭建Jenkins
      • 搭建Zookeeper
        • zookeeper集群
      • 搭建Tomcat
      • 搭建Mysql
      • 搭建PHP环境
      • 搭建Swagger
      • 部署owncloud云盘
      • 部署ES
        • ELK 分析 Laravel 日志
      • java容器运行外置jar
      • 部署etcd节点
    • docker阿里云私有仓库
    • Docker-compose
      • 启动gitlab
      • 创建mysql数据库
      • gitlab-docker-compose.yml
      • nginx-docker-compose.yml
  • showdoc
  • 数据库
    • 授权
    • 开启远程访问及相关权限控制
    • 快速导出导入大数据
    • 单机备份
    • 加密并切片备份到飞机群
    • 异地备份
    • binlog日志
    • docker 搭建mysq主从
    • docker搭建主从数据库及读写分离
    • docker快速恢复备份数据库
  • Telegram机器人
    • SHELL命令完成信息推送
    • Javacript创建信息推送页面
    • node远程执行shell命令
  • 安全
    • 后台安全登陆
    • github渗透测试工具库
    • 漏洞扫描-AWVS-Nessus-Docker版
    • AWVS13.X 破解版Windows、Linux、Docker
    • 操作图片元信息(Megadata)
    • 一键测试服务器到国内外各地速度脚本
  • 翻墙
    • 4K高清看P站和X站翻墙教程
    • 翻墙后重度使用的13个网站及app,深度适合国人
  • 色站自动化
    • 自动化下载片源
    • 自动化按照 AV 分类下载种子 脚本
    • 自动化切片打水印字幕
    • 自动化发布片源
    • ffmpeg一键切片并发布
  • 进阶技术
    • 哈希hash下注
    • 翻译 php 代码内 中文 为 泰语
      • bash 版
      • python 版
    • shell实现多线程
    • 多线程parallel命令 「纯干货」
    • 6our.com 刷评论广告
    • 90tiyu.com 撞库出电话
      • 90tiyu.com_guangzhou.sh
      • 90tiyu.com_guiyang.sh
      • 90tiyu.com_guilin.sh
    • tianhoo.cn 撞库出邮箱
    • 俄罗斯方块游戏
  • go开发环境
  • VPN
  • 生产环境docker部署
Powered by GitBook
On this page
  1. 服务
  2. NGINX

nginx+GeoIP2模块编译

sudo docker run -it --name nginxgeoip2 docker.io/centos:7 /bin/bash 
yum -y install git
git clone https://github.com/HackerNiao/nginx-geoip2
bash -x nginx-geoip2/nginx_geoip2.sh
#!/bin/bash
# 安装依赖
yum -y update
yum -y install vim wget zip unzip git gcc pcre-devel openssl openssl-devel gd-devel 

mkdir /opt
cd /opt/
# 下载geoip2模块的代码
wget https://github.com/maxmind/libmaxminddb/releases/download/1.3.2/libmaxminddb-1.3.2.tar.gz
tar -zxvf libmaxminddb-1.3.2.tar.gz
cd libmaxminddb-1.3.2
./configure && make && make install
echo /usr/local/lib  >> /etc/ld.so.conf.d/local.conf 
ldconfig
# 此代码参与nginx的编译
mkdir -p /usr/share/GeoIP/
cd /opt/
git clone https://github.com/HackerNiao/nginx-geoip2
cd nginx-geoip2
tar -zxvf GeoLite2-City_20200519.tar.gz
mv ./GeoLite2-City_20200519/GeoLite2-City.mmdb /usr/share/GeoIP/
tar -zxvf GeoLite2-Country_20200519.tar.gz
mv ./GeoLite2-Country_20200519/GeoLite2-Country.mmdb /usr/share/GeoIP/

# 设置www用户
useradd -s /sbin/nologin -M www
id www

cd /opt/
wget https://nginx.org/download/nginx-1.20.2.tar.gz
tar zxvf nginx-1.20.2.tar.gz
cd nginx-1.20.2
./configure --user=www --group=www \
--with-select_module \
--with-poll_module \
--with-pcre \
--with-http_v2_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_image_filter_module \
--with-http_gzip_static_module \
--with-http_gunzip_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_addition_module \
--with-http_realip_module \
--with-http_mp4_module \
--prefix=/www/server/nginx \
--add-module=/opt/nginx-geoip2/ngx_http_geoip2_module
make && make install

cp /www/server/nginx/sbin/nginx /sbin/

nginx -t

mkdir -p /www/server/nginx/conf/vhost
cd /www/server/nginx/conf/
cp nginx.conf nginx.conf.back

cat > /www/server/nginx/conf/nginx.conf <<"EOF"
user  www www;
worker_rlimit_nofile 51200;
worker_processes  auto;
events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http {
    include       mime.types;
    include       vhost/*.conf;
    set_real_ip_from 0.0.0.0/0;
    real_ip_header X-Forwarded-For;
    geoip2  /usr/share/GeoIP/GeoLite2-Country.mmdb {
          $geoip2_Country_code country iso_code;
    }
    geoip2  /usr/share/GeoIP/GeoLite2-City.mmdb {
          $geoip2_City_code country iso_code;
    }
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
EOF

cat > /www/server/nginx/conf/vhost/zh-api-cdn-host.conf <<"EOF"
upstream zh-api-cdn-host {
    ip_hash;
    server 1.1.1.1 weight=1 max_fails=2 fail_timeout=2s;
}
server
{
    listen 80;
    server_name zh-api-cdn-host.666.com;
    index index.php index.html index.htm default.php default.htm default.html;
#   root /www/wwwroot/zh-api-cdn-host.666.com;

location / {
            proxy_pass http://zh-api-cdn-host/$uri;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header token $http_token;
        }    
    access_log  /www/server/nginx/logs/zh-api-cdn-host.666.com.log;
    error_log  /www/server/nginx/logs/zh-api-cdn-host.666.com.error.log;
}
EOF

cat > /www/server/nginx/conf/vhost/zh-h5.conf <<"EOF"
upstream zh-h5 {
    ip_hash;
    server 1.1.1.1:81 weight=1 max_fails=2 fail_timeout=2s;
    server 1.1.1.1:82 weight=1 max_fails=2 fail_timeout=2s;
    server 1.1.1.1:83 weight=1 max_fails=2 fail_timeout=2s;
}

server
{
    listen 80;
    server_name zh-h5.666.com;
    index index.php index.html index.htm default.php default.htm default.html;
location ~ .* {
set $language 0;
if ($geoip2_country_code = CN) {
  set $language "1";
  add_header  accept-language zh-CN;
}
if ($geoip2_country_code = MO) {
  set $language "2";
  add_header  accept-language zh-CN;
}
if ($geoip2_country_code = HK) {
  set $language "3";
  add_header  accept-language zh-CN;
}
if ($geoip2_country_code = TW) {
  set $language "4";
  add_header  accept-language zh-CN;
}
if ($geoip2_country_code = VN) {
  set $language "5";
  add_header  accept-language vi-VN;
}
if ($language = 0){
    add_header  accept-language en;
}
        try_files $uri $uri/ /index.html;
            proxy_pass http://zh-h5;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Accept-Language $http_accept_language;
            proxy_set_header token $http_token;
   }    
    access_log  /www/server/nginx/logs/zh-h5.666.com.log;
    error_log  /www/server/nginx/logs/zh-h5.666.com.error.log;
}
EOF
nginx -t
PreviousNGINXNextNginx根据不同浏览器语言配置跳转

Last updated 2 years ago