docker下nginx自定义日志并限制ip访问方式

 更新时间:2025年11月18日 08:38:38   作者:何超杰  
文章介绍了如何使用Nginx和docker-compose.yml创建一个目录,并在配置文件conf.d/default.conf中限制IP访问,限制IP访问的语法包括deny和allow,可以应用到http、server和location级别

一.Nginx部署

docker-compose.yml

version: '2'
services:
     nginx:
      image: 'nginx:latest'
      restart: always
      container_name: nginx
      ports:
        - '80:80'
        - '443:443'
      volumes:
        - '/app/nginx/conf.d:/etc/nginx/conf.d'
        - '/app/nginx/logs:/etc/nginx/logs'
      command:  nginx -g 'daemon off;'

创建目录

mkdir -p /app/nginx/logs
mkdir -p /app/nginx/conf.d

conf.d/default.conf配置文件

server {
    listen       80;
    server_name localhost;
    #自定义日志路径,log格式使用main(默认)
    access_log logs/access_service.log main; 
   location / {
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;
       proxy_pass http://xxx.com;
       client_max_body_size    100m;
      }

     error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

二.限制IP访问

查找访问者ip方法

awk ‘{print $1}' access_service.log |sort |uniq -c|sort -n

配置文件conf.d/default.conf

server {
    listen       80;
    server_name localhost;
    access_log  logs/access_service.log  main; 
     # 将禁止ip放在server级别
      deny 172.20.0.1; 
   location / {
      # 将禁止ip放在location级别
      # deny 172.20.0.1; 
      allow 172.20.0.1;

       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;
       proxy_pass http://test.xylink.cn;
       client_max_body_size    100m;
      }
     error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

限制ip语法

deny和allow可以应用到http,server,location级别

//屏蔽单个ip访问
deny IP; 
//允许单个ip访问
allow IP; 
//屏蔽所有ip访问
deny all; 
//允许所有ip访问
allow all; 
//屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令
deny 123.0.0.0/8
//屏蔽IP段即从123.45.0.1到123.45.255.254访问的命令
deny 124.45.0.0/16
//屏蔽IP段即从123.45.6.1到123.45.6.254访问的命令
deny 123.45.6.0/24
//如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
//那需要你在guolv_ip.conf中这样写
allow 1.1.1.1; 
allow 1.1.1.2;
deny all; 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nginx限制IP恶意调用短信接口处理方法

    nginx限制IP恶意调用短信接口处理方法

    这篇文章主要介绍了nginx限制IP恶意调用短信接口处理方法,一种是nginx黑名单方式,另一种是限制IP请求数。需要的朋友可以参考下
    2018-06-06
  • 详解nginx basic auth配置踩坑记

    详解nginx basic auth配置踩坑记

    本篇文章主要介绍了详解nginx basic auth配置踩坑记,nginx的basic auth配置由ngx_http_auth_basic_module模块提供,对HTTP Basic Authentication协议进行了支持,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Nginx 访问控制的多种方法

    Nginx 访问控制的多种方法

    本文系统介绍了Nginx实现Web访问控制的多种方法,包括IP黑白名单、路径/方法/参数控制、HTTP基本认证、防盗链机制、客户端证书校验、限速限流、地理位置控制等基础防护策略,感兴趣的可以了解一下
    2025-12-12
  • nginx如何配置部署一个域名,多个端口

    nginx如何配置部署一个域名,多个端口

    文章主要讲述了在Windows下使用Nginx部署服务器的过程,包括配置Nginx、部署前端和后端项目、设置反向代理以及部署多个不同端口的项目
    2026-03-03
  • Nginx+uWSGI部署实践

    Nginx+uWSGI部署实践

    文章介绍了如何使用Nginx和uWSGI部署Django应用,包括配置WSGI接口、安装和配置uWSGI、关联uWSGI和Nginx、配置静态文件、转交请求给其他地址以及实现负载均衡
    2025-12-12
  • Nginx日志文件按日期分割的实战指南

    Nginx日志文件按日期分割的实战指南

    在Web服务器管理中,日志文件是监控服务器性能、分析用户行为和排查问题的重要工具,随着网站访问量的增长,日志文件的大小也会迅速增加,本文将介绍如何配置Nginx,使其日志文件能够自动按日期进行分割,需要的朋友可以参考下
    2025-10-10
  • Nginx配置带SSL认证的转发方式 (HTTPS请求)

    Nginx配置带SSL认证的转发方式 (HTTPS请求)

    本文详细介绍了如何在Windows系统上安装和配置Nginx以支持HTTPS,首先,下载并解压Nginx和OpenSSL,并配置环境变量,然后,生成SSL证书和密钥文件,并在Nginx配置文件中启用SSL,最后,启动Nginx并访问配置的HTTPS路径以验证配置是否成功
    2026-01-01
  • nginx的master进程和worker进程用法解读

    nginx的master进程和worker进程用法解读

    Nginx启动后包含master和worker进程,master负责管理worker及读取配置,worker处理请求,通过worker_processes设置worker数量(通常不超过CPU核心数)或auto自动检测,结合worker_cpu_affinity绑定CPU核心以优化性能
    2025-07-07
  • nginx如何将http访问的网站改成https访问

    nginx如何将http访问的网站改成https访问

    这篇文章主要介绍了nginx如何将http访问的网站改成https访问,帮助大家更好的理解和使用nginx,感兴趣的朋友可以了解下
    2021-02-02
  • 浅谈一下Nginx性能优化

    浅谈一下Nginx性能优化

    这篇文章主要介绍了Nginx性能优化,Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,需要的朋友可以参考下
    2023-04-04

最新评论