qradar-guru.webp

Collecting Nginx Proxy Manager logs in QRadar

19. Jun 2026 — Roger


Prerequisites of the collection

  • Nginx Proxy Manager installed with Docker and working properly
  • Rsyslog service installed on the physical server
  • Network flow opened between your physical server and your syslog or SIEM server (minimum 1 port)

Let's dig a bit on the configuration and prerequisites to validate and configure necessary point. The event collection implementation used Nginx Proxy Manager deployed in Docker container. Below the design of the collection:

In your Nginx Proxy Manager container configuration file, you need to add a volume for your logs file in order to be able to access directly from the hosting server. To do so, add these lines:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    
# application configuration

    volumes:
      - ./data:/data # line to add

After that, deploy your new configuration and validate the fact that logs are being populated in the ./data/logs/ folder.

Second configuration to made is the rsyslog service in order to grab logs from your ./data/logs/ folder and send them to your syslog or SIEM server. The best way is to create a dedicated configuration file for this located in /etc/rsyslog.d/nginx-proxy-manager.log.

module(load="imfile" PollingInterval="10")

input(type="imfile"
      File="/path/to/nginx/proxy/manager/folder/data/logs/*.log"
      Tag="nginx-pm"
      Severity="info"
      Facility="local7")

local7.*                @@<SERVER_IP>:<SERVER_PORT>

 Before apply the new configuration, run rsyslogd -N1 to validate that you are not bringing errors to the rsyslog configuration. If no errors, restart the service and validate reception of logs in your syslog server.  

Key points of the DSM

Custom Properties:

Property NameExtraction TypeExtraction ExpressionGroup capturesReuse of native QRadar property
Destination IPRegex\[Sent-to\s+([\d\.]+)1YES
Event CategoryRegex<\d+>\w+([\d\s:]+)<SERVER_HOSTNAME>\s([^\s]+)2YES
Event IDRegex\[[^\]]+][^\d]+(\d+)1YES
HTTP Host {1}Regex([^\s]+)\s+"([^\s]+)"\s+\[Client1NO
HTTP Host {2}Regexserver:\s+([^\s]+),\s+request1NO
HTTP Method {1}Regex\d+\s-\s(\w+)1NO
HTTP Method {2}Regexrequest:\s"(\w+)1NO
HTTP Path {1}Regex([^\s]+)\s+"([^\s]+)"\s+\[Client1NO
HTTP Path {2}Regexrequest:\s+"\w+\s+([^\s]+)1NO
Log Source Time {1}Regex\[([^\s]+)\s+\+\d+]1YES
Log Source Time {2}Regex(\d{4}/\d{2}/\d{2}\s\d{2}:\d{2}:\d{2})1YES
Packet LengthRegexLength\s+(\d+)1NO
Source IP {1}Regex\[Client\s+([\d\.]+)1YES
Source IP {2}Regexclient:\s([\d\.]+)1YES
User AgentRegex\[Sent-to\s+[\d\.]+]\s+"([^"]+)"1NO

Event Mapping

The mapping is very close to other reverse proxy and used HTTP code to map. Not every code is mapped, and you can add your own custom mapping depending on your infrastructure.

Download the DSM export of this article directly

You reach the end of this article, huge thanks for reading 🫢

πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦ To become a more friendly guru of QRadar, join the community on Github and leave a ⭐.

πŸ€— To become a nicer guru of QRadar, leave a comment, your feedback will always be welcome (when constructive of course).


Comments


Be the first to comment.


Integration Demystify log source time parsing