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基础学习之realip模块的使用方法

    Nginx基础学习之realip模块的使用方法

    这篇文章主要给大家介绍了关于Nginx基础学习之realip模块使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • Nginx 502 Bad Gateway错误解决详细指南与实例

    Nginx 502 Bad Gateway错误解决详细指南与实例

    这篇文章主要介绍了Nginx 502 Bad Gateway错误解决的相关资料,502BadGateway错误是Web开发和运维中常见的错误,表示一个服务器在充当网关或代理时,从上游服务器收到了一个无效的响应,需要的朋友可以参考下
    2024-11-11
  • Nginx离线安装的保姆级教程

    Nginx离线安装的保姆级教程

    为了确保gcc-c++和Nginx的正确安装,建议使用yum工具在线下载rpm包,避免手动下载安装时出现依赖缺失的问题,本文就来介绍一下如何离线安装,感兴趣的可以了解一下
    2024-09-09
  • 如何使用Nginx解决跨域问题详解

    如何使用Nginx解决跨域问题详解

    本地运行一个项目,但是要访问外域的api接口,存在跨域问题,下面这篇文章主要给大家介绍了关于如何使用Nginx解决跨域问题的相关资料,文中介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • 解决nginx启动失败(bind() to 0.0.0.0:80 failed,An attempt was made to access a socket in...)

    解决nginx启动失败(bind() to 0.0.0.0:80 failed,An attempt was 

    这篇文章主要介绍了解决nginx启动失败问题(bind() to 0.0.0.0:80 failed,An attempt was made to access a socket in ...),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Nginx安全配置全过程

    Nginx安全配置全过程

    这篇文章主要介绍了Nginx安全配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Tomcat请求处理在源码中的轮转解析

    Tomcat请求处理在源码中的轮转解析

    这篇文章主要为大家介绍了Tomcat请求处理在源码中的轮转解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 详解nginx实现ssl反向代理实战

    详解nginx实现ssl反向代理实战

    本篇文章主要介绍了nginx实现ssl反向代理实战,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 在网关中使用Nginx配置HTTP透明代理案例

    在网关中使用Nginx配置HTTP透明代理案例

    这篇文章主要介绍了在网关中使用Nginx配置HTTP透明代理案例,中间还需要iptables配合,需要的朋友可以参考下
    2014-06-06
  • 将树莓派转身为强大的Web服务器如何使用Nginx和cpolar实现远程访问

    将树莓派转身为强大的Web服务器如何使用Nginx和cpolar实现远程访问

    这篇文章主要介绍了Nginx可视化管理工具结合cpolar实现远程访问内网服务,相比其他 Web 服务器,Nginx 的内存占用率非常低,可以在树莓派等资源受限的设备上运行,同时结合cpolar 内网穿透工具即可实现远程访问,需要的朋友可以参考下
    2023-09-09

最新评论