如何不在nginx访问日志中记录get请求参数?

2024-01-10

我需要启用访问日志,但出于合规性原因,无法在访问日志中记录敏感 GET 请求参数的数据。虽然我知道,我可以解析日志(事后)并清理它们,但这不是一个可接受的解决方案 - 因为出于合规性原因,日志不能被篡改。

如何防止“sensitive_data”参数值写入日志?这里有一些想法:

  • 在 POST 请求中发送——不是 JSONP 的选项。
  • 对“资源”使用新的位置规则,并设置访问日志以使用不同格式的 log_format(即不使用 $remote_addr)。请参阅此以供参考:http://nginx.org/en/docs/http/ngx_http_log_module.html http://nginx.org/en/docs/http/ngx_http_log_module.html
  • 记录 $sanitized_remote_addr,并在将其写入日志之前对其进行设置(以某种方式解析 $remote_addr 或其他内容?)。我们不确定这是否容易实现。

这应该怎么做呢?


之前的答案将不再有效log_format模块只能用于http级别配置。

为了解决这个问题,我们可以删除log_format配置来自location指令并将其保留在 http 级别配置中。

http {

    log_format filter '$remote_addr - $remote_user [$time_local] '
        '"$temp" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

    # Other Configs
}

log_format指令可以在我们的后面定义变量location指令块。

所以最终的配置将如下所示:

http {
    
    log_format filter '$remote_addr - $remote_user [$time_local] '
        '"$temp" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
    
    # Other Configs

    server {
        #Server Configs
        location / {
            set $temp $request;
            if ($temp ~ (.*)password=[^&]*(.*)) { 
                set $temp $1password=****$2;
            }

            access_log /opt/current/log/nginx_access.log filter;
        }
    }
}

请注意,错误日志可能仍会记录此信息。 使用error_logs off;在您的位置块中禁用此功能(假设您可以在应用程序的其他位置记录这些错误)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何不在nginx访问日志中记录get请求参数? 的相关文章

  • Docker 中的 NGINX 缓存 IP 地址并提供错误的 Content-Type

    Summary 我想让NGINX 不是NGINX Plus 通过使用变量从DNS名称重新解析IP地址proxy pass 如建议的这篇 Nginx 官方文章 在变量中设置域名 部分 https www nginx com blog dns
  • Openresty 中的并发模型是什么?

    我很难理解 openresty 或 nginx 的并发模型 我读了Lua变量作用域 http wiki nginx org HttpLuaModule Lua Variable Scope 它解释了变量的生命周期 但它没有说明对它们的并发访
  • Nginx - Heroku Docker - 是否可以在 Heroku 上运行 Nginx 作为反向代理

    我试图弄清楚如何使用 Nginx 在 Heroku 应用程序上构建反向代理 问题是 Heroku 似乎每个应用程序只接受一个容器 但我的应用程序系统至少会使用三个容器 一个用于 Nginx 一个用于我的应用程序前端 一个用于我的业务逻辑服务
  • 错误请求 400:nginx/gunicorn

    我已经遵循了这个教程 http blog wercker com 2013 11 25 django 16 part3 html http blog wercker com 2013 11 25 django 16 part3 html我现
  • Logrotate - nginx 日志不在 docker 容器内旋转

    我有一个运行 nginx 的 docker 容器 它正在将日志写入 var log nginxLogrotate 安装在 docker 容器中 并且 nginx 的 logrotate 配置文件已正确设置 尽管如此 logrotate 仍不
  • nginx 上的多个网站和可用网站

    通过 nginx 的基本安装 您的sites available文件夹只有一个文件 default 怎么样sites available文件夹的工作原理以及如何使用它来托管多个 单独的 网站 只是为了添加另一种方法 您可以为您托管的每个虚拟
  • 使用查询参数值进行 NGINX 301 重定向

    我想重定向example com lang en to example com en 我正在使用 Python Django 我的服务器运行 Plesk Nginx 我尝试像这样在我的网页上重定向 但这是行不通的 rewrite lang
  • 如何避免 nginx“上游发送太大的标头”错误?

    我正在运行 nginx Phusion Passenger 和 Rails 我遇到了以下错误 upstream sent too big header while reading response header from upstream
  • 使用代理协议的 kubernetes nginx 入口最终出现损坏的标头

    我尝试使用代理协议在 google 容器上设置 nginx 入口 nodeport 以便可以将真实 IP 转发到后端服务 但最终导致标头损坏 2017 02 05 13 48 52 error 18 18 2 broken header H
  • uwsgi协议比http协议快吗?

    我正在尝试部署 django 应用程序的各种设置 我的第一选择是使用带有 mod wsgi 的简单 apache 服务器 我之前已经实现了该服务器供私人使用 由于当前的部署是供公众使用的 因此我正在考虑各种选择 根据网上提供的信息 使用 n
  • Docker nginx 代理到主机

    简短的介绍 Nginx 运行在 docker 上 如何配置 nginx 以便将调用转发到主机 详细描述 我们有一个 Web 应用程序与几个后端通信 假设为rest1 rest2 和rest3 我们负责rest1 让我们考虑一下我开始rest
  • Docker 网络 - nginx:[emerg] 在上游找不到主机

    我最近开始迁移到 Docker 1 9 和 Docker Compose 1 5 的网络功能来取代使用链接 到目前为止 通过链接 nginx 通过 docker compose 连接到位于一组中不同服务器中的 php5 fpm fastcg
  • Flask+Nginx+uWSGI:导入错误:没有名为站点的模块

    我安装为http www reinbach com uwsgi nginx flask virtualenv mac os x html http www reinbach com uwsgi nginx flask virtualenv
  • Capistrano 部署后 EC2 服务器中缺少 puma.sock

    通过 capistrano 将 ruby on Rails 项目的生产部署到 ec2 上的实例后 我在 nginx 错误日志中收到以下错误 亚马逊公共主机显示 502 Bad Gateway nginx 1 10 0 Ubuntu 我按照教
  • 从 git repo 拉取后出现白屏死机(React JS、Nginx)

    每当我从 master 分支执行 git pull 到服务器上时 我所有的 React 文件似乎都消失了 屏幕变成白色 我发现的临时解决方法是 删除浏览器 cookie 缓存和站点历史记录 然后关闭浏览器并重试 删除node modules
  • 在 nginx 后面使用 GitLab 启用 basic_auth?

    我已经成功安装了 GitLab 来管理私有存储库 这真是太棒了 我遇到的问题是默认情况下 当任何人访问我的子域时都会显示 Gitlab 登录信息 我想在用户获得 GitLab 登录屏幕之前使用 basic auth 层保护整个区域 不幸的是
  • nginx 504 网关超时

    我正在 nginx 上使用 phusion passenger 运行 Rails3 0 7 项目 当我正在做 ajax 时 大约需要 15 分钟来处理 调用 ajax 10 分钟后 它会跳出一个 Firebug 错误 显示 504 Gate
  • nginx/uwsgi 服务器的持久内存中 Python 对象

    我怀疑这是否可能 但这是问题和提出的解决方案 提出的解决方案的可行性是这个问题的对象 我有一些需要可用于所有请求的 全局数据 我将这些数据保存到 Riak 并使用 Redis 作为缓存层以提高访问速度 目前 数据被分为约 30 个逻辑块 每
  • Nginx 与 phpmyadmin 登录后重定向错误

    我正在使用 nginx 设置 phpMyAdmin 我可以访问 phpMyAdminhttp localhost phpmyadmin http localhost phpmyadmin 但是 当我登录时 URL 被重定向到http loc
  • 设置 nginx 具有多个 IP

    我的 nginx 配置文件位于 etc nginx sites available 下 有两个上游说 upstream test1 server 1 1 1 1 50 server 1 1 1 2 50 upstream test2 ser

随机推荐

  • 如何向 Laravel 4 Forms 添加类

    也许这是一个简单的答案 但我找不到任何与此相关的文档 我已经使用 Laravel 4 设计了一个表单 它似乎运行良好 但现在我需要对其进行样式设置 使用刀片时如何向表单添加类 Form open array url gt foo bar 我
  • 按排序顺序获取树的所有叶子

    对于树结构如下 public class Node implements Comparable
  • URL缩短器可以传递参数吗?

    我使用 bit ly 来缩短我的网址 我的问题 参数未传递 让我解释一下我使用的http bit ly MYiPhoneApps http bit ly MYiPhoneApps它重定向 比方说 到http iphone pp p net
  • 延迟加载或巨大的 CSS-sprite(大小为 9MB)

    条件 这是一个电影网站 约有 1000 张 15kb 的图像 大约 70 的图像将在页面访问时加载 图像的有效期很长 我想我会选择 CSS sprites 因为大多数图像都会被访问者以任何方式加载 但所有图像的 CSS sprite 都是
  • 使用XMPP或WebSocket,为什么用户之间的实时通信需要服务器?

    在底层 都是关于套接字通信的 如果有某种方法可以获取两个用户的IP 为什么不能直接在用户之间建立连接 而必须通过中间的服务器 我的2分钱 没有人强迫我们拥有基于服务器的实时通信模型 事实上 XMPP 有一个扩展名为 无服务器消息传递 htt
  • 使用 stat_summary 的标准误差线

    以下代码使用 Hmisc ddply 和 ggplot 生成带有标准误差条的条形图 means se lt ddply mtcars cyl function df smean sdl df qsec mult sqrt length df
  • adb 设备与 ADB wireless 离线

    由于某些原因 我的手机无法再使用电缆 我在互联网上看到可以通过 Wifi 将 adb 连接到 但是我尝试了一下 得到了这个 adb devices List of devices attached 192 168 1 2 5555 offl
  • Django + Google SSO openid

    我想要我的申请http app acquee com designer http app acquee com designer接受谷歌帐户作为登录 我找到了一堆 django 库 但大多数都是在我不使用的现有 Django 身份验证系统之
  • Django 开发服务器消息 - 它们是什么意思?

    如果我运行 Django 开发服务器并在浏览器中查看我的应用程序 我会收到如下消息 08 一月 2011 18 12 45 获取 HTTP 1 1 200 2714 08 一月 2011 18 12 45 获取 static style c
  • 嵌套列表:对列表中每个子元素的不同元素应用不同的函数

    我必须加载两种类型的数据集 使用不同的函数进行处理 然后连接在一起 我有每种类型的多个数据集 它们的名称存储在嵌套列表中 我想将两个不同的函数 或一个标识嵌套列表中每个数据集的函数 应用于嵌套列表中的每个子元素 我尝试了 lapply sa
  • Java中的动态ArrayList

    我对java有一个疑问 我们可以创建动态的吗 ArrayList or String 在 for 循环内 例如 在我的应用程序中 有类别字段 不是静态的 从服务器获取 我想创建ArrayList or String 基于类别大小的对象 如何
  • 允许任何语言的字母(如“ñ”)的正则表达式

    尝试让用户使用其他语言 例如西班牙语或法语 中的特殊字符 我原来有这个 A Za z0 9 i 然后将其更改为 p L p N i 但仍然不起作用 应允许使用诸如 之类的字母 谢谢 修订 我发现在开头加上 UTF8 有助于解决问题 所以我使
  • Nodejs 可以与 Cakephp 集成吗?

    我想实时监控用户输入的数据comments桌子 我有一个 Apache 服务器正在运行 并且假设它在端口 1337 上有一个节点服务器 每次有人保存新数据时 我该怎么做 例如返回表中的总行数comment并显示在view 也许方法是使 th
  • 自动展开PropertyGrid中的一些属性

    我想通过使用该类的属性来自动展开加载了我的 SettingsStructure 类的实例的 PropertyGrid 中的一些节点 另外 如果用户在 PropertyGrid 上再次加载该实例 我试图让实例 记住 每个属性是否已展开 我做了
  • 在SQL中显示表的结构

    有人可以向我更好地解释一下吗 如何显示表的结构 我运行select from table 当然它会显示表中的所有内容 但是 我被要求显示表的结构 这是什么意思 命令是什么 这是我的下表 SQL gt select from dept DEP
  • 我应该在 Python 中使用“公共”属性还是“公共”属性?

    在 Python 中 我有以下示例类 class Foo self attr 0 property def attr self return self attr attr setter def attr self value self at
  • 从 data.table 聚合返回多列[重复]

    这个问题在这里已经有答案了 我想用data table作为替代aggregate or ddply 因为这两种方法没有像希望的那样有效地扩展到大型对象 不幸的是 我还没有弄清楚如何让向量返回聚合函数在结果中生成多列data table 例如
  • Bootstrap 3:嵌套选项卡

    我试图将一个选项卡放在一个选项卡内 但是每当我单击内部嵌套选项卡时 整个内部嵌套选项卡行就会消失 这是 jsfiddle 中的示例 http jsfiddle net jNWMY 1 http jsfiddle net jNWMY 1 尝试
  • 创建原始数据包来欺骗 UDP 数据包

    我正在寻找使用 Java 欺骗 UDP 数据包 有没有好的 Java 库可以让您创建自己的原始套接字 我会使用一个 Java API 来包装libpcap http www tcpdump org libpcap 有一个 注入 功能 允许您
  • 如何不在nginx访问日志中记录get请求参数?

    我需要启用访问日志 但出于合规性原因 无法在访问日志中记录敏感 GET 请求参数的数据 虽然我知道 我可以解析日志 事后 并清理它们 但这不是一个可接受的解决方案 因为出于合规性原因 日志不能被篡改 如何防止 sensitive data