nginx-request-logging

Nginx Request Logging Configuration

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "nginx-request-logging" with this command: npx skills add letta-ai/skills/letta-ai-skills-nginx-request-logging

Nginx Request Logging Configuration

This skill provides guidance for configuring Nginx web servers with custom logging, rate limiting, and error handling.

When to Use This Skill

Apply this skill when tasks involve:

  • Installing and configuring Nginx

  • Setting up custom log formats

  • Implementing rate limiting

  • Creating custom error pages (404, 500, etc.)

  • Configuring Nginx to listen on non-standard ports

Pre-Configuration Analysis

Before modifying any Nginx configuration:

Examine existing configuration structure

  • Read /etc/nginx/nginx.conf to understand the current setup

  • Check for existing include directives to understand file organization

  • Identify where log formats, rate limiting zones, and other global settings are defined

Check system state

  • Verify if Nginx is already installed: which nginx or nginx -v

  • Check if Nginx is already running: pgrep nginx or ps aux | grep nginx

  • Verify if the target port is available: ss -tlnp | grep <port> or netstat -tlnp | grep <port>

Backup original configuration

  • Create a backup before modifications: cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

Configuration Approach

Directory Structure

Nginx configurations typically follow this hierarchy:

  • /etc/nginx/nginx.conf

  • Main configuration (global settings, log formats, rate limiting zones)

  • /etc/nginx/conf.d/

  • Site-specific configurations (server blocks)

  • /etc/nginx/sites-available/ and /etc/nginx/sites-enabled/

  • Alternative site management (Debian-based)

Configuration Placement Guidelines

Setting Type Location Reason

Log format definitions nginx.conf (http block) Must be defined before use in server blocks

Rate limiting zones nginx.conf (http block) Zones are shared across server blocks

Server blocks conf.d/*.conf

Modular, easy to manage

Custom error pages Server block or location block Context-specific

Rate Limiting Configuration

Rate limiting requires two parts:

Zone definition (in http block of nginx.conf):

limit_req_zone $binary_remote_addr zone=zonename:10m rate=10r/s;

Zone application (in server or location block):

limit_req zone=zonename burst=5 nodelay;

Custom Log Format

Define custom log formats in the http block:

log_format custom_format '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

Apply in server block:

access_log /var/log/nginx/custom_access.log custom_format;

Service Management

Nginx service management varies by environment:

Environment Start Command Reload Command Stop Command

systemd systemctl start nginx

systemctl reload nginx

systemctl stop nginx

Direct nginx

nginx -s reload

nginx -s stop

Docker/Container nginx -g 'daemon off;'

nginx -s reload

nginx -s quit

Important: Always test configuration before starting/reloading:

nginx -t

Verification Strategies

Basic Functionality

curl -s http://localhost:&#x3C;port>/ curl -s -o /dev/null -w "%{http_code}" http://localhost:&#x3C;port>/nonexistent

Rate Limiting Verification

Rate limiting requires concurrent requests to trigger. Sequential requests will not exceed the rate limit.

Correct approach (parallel requests):

seq 20 | xargs -P 20 -I {} curl -s -o /dev/null -w "%{http_code}\n" http://localhost:&#x3C;port>/

Incorrect approach (will not trigger rate limiting):

for i in {1..20}; do curl -s http://localhost:&#x3C;port>/; done # Too slow, sequential

Log Verification

tail -f /var/log/nginx/access.log tail -f /var/log/nginx/error.log

Common Pitfalls

Log format not found: Log format must be defined in nginx.conf before being referenced in server blocks

Rate limiting not triggering: Sequential requests are too slow; use parallel requests with xargs -P or similar

Configuration syntax errors: Always run nginx -t before starting or reloading

Port already in use: Check with ss -tlnp before configuring a new port

systemctl not available: In containers or minimal environments, use nginx command directly

Default site conflicts: Remove or disable default site configuration when creating custom configurations:

rm -f /etc/nginx/sites-enabled/default

Missing directories: Verify required directories exist before writing configuration:

ls -la /etc/nginx/conf.d/

Execution Efficiency

  • Batch file operations: Create multiple static files (index.html, 404.html, etc.) in parallel when possible

  • Combine verification steps: Test multiple endpoints in a single verification pass

  • Plan verification upfront: Determine the testing strategy before implementation

  • Use idempotent commands: Prefer mkdir -p , rm -f to handle existing/missing files gracefully

Example Workflow

  • Check system state (Nginx installed, running, port availability)

  • Read existing nginx.conf structure

  • Backup configuration

  • Create required directories and static content

  • Modify nginx.conf for global settings (log format, rate limiting zone)

  • Create server configuration in conf.d/

  • Remove conflicting default configurations

  • Test configuration with nginx -t

  • Start/reload Nginx service

  • Verify all functionality (main page, error pages, rate limiting, logs)

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

extracting-pdf-text

No summary provided by upstream source.

Repository SourceNeeds Review
General

video-processing

No summary provided by upstream source.

Repository SourceNeeds Review
General

google-workspace

No summary provided by upstream source.

Repository SourceNeeds Review
General

portfolio-optimization

No summary provided by upstream source.

Repository SourceNeeds Review