Nginx Block Unwanted Paths to Secure Your Application

Nginx block unwanted paths
1024 1024 Ahmet Onur

Bots and malicious users often send random requests targeting sensitive files or paths in your application, such as .env files, .git directories, or backup files. These requests not only pose a security risk but also waste valuable server resources. In this article, we’ll explore how you can use Nginx block unwanted paths efficiently and return a simple 403 Forbidden response, preventing your application from even processing these unnecessary requests.


Why Block Unwanted Paths?

  1. Security Risks
    Files like .env or .git contain sensitive information such as environment variables, database credentials, or code history. If exposed, these files can compromise your application.
  2. Resource Drain
    Bots and automated scripts often send a high volume of requests, consuming server bandwidth and processing power.
  3. Reducing Noise
    Blocking unnecessary paths ensures that your logs are cleaner, making it easier to identify legitimate traffic and troubleshoot issues.

The Nginx Solution

Nginx, a popular web server and reverse proxy, provides powerful regex-based rules to block specific paths. By leveraging these rules, you can deny access to sensitive or unwanted files before they reach your application. You can read more related to nginx here


Basic Configuration

Below is a configuration example to block common unwanted paths:

server {
   listen 80;
   server_name yourdomain.com;

   # Block requests containing sensitive or unwanted patterns
   location ~* (bak|backup|swp|tmp|old|log|\.git|\.php|\.env|\.gitlab|wp-) {
       return 403;  # Respond with Forbidden
   }

   # Default proxy or app configuration
   location / {
       proxy_pass http://127.0.0.1:8080;  # Replace with your backend
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header Host $host;
   }
}

Explanation of the Configuration

  1. The ~* Directive
    This enables case-insensitive regex matching. For example, both backup and BACKUP will be blocked.
  2. Regex Patterns
  • bak|backup|swp|tmp|old|log: Matches temporary, old, or log files.
  • \.git|\.php|\.env: Matches .git, .php, or .env files (note the escaped .).
  • wp-: Matches anything containing wp-, such as wp-config.php.
  1. Return 403
    If the request matches any of the patterns, Nginx responds with a 403 Forbidden status, preventing further processing.

Testing Your Configuration

  1. Check Nginx Syntax
    Always test your configuration before reloading:
   sudo nginx -t
  1. Reload Nginx
    Apply the changes:
   sudo systemctl reload nginx
  1. Verify Behavior
    Test blocked and allowed URLs using curl:
   curl -I http://yourdomain.com/.env
   curl -I http://yourdomain.com/wp-config.php
   curl -I http://yourdomain.com/style.css
  • Blocked requests will return 403 Forbidden.
  • Allowed requests will return 200 OK or the appropriate status code.

Additional Tips for Enhanced Security

Limit Access to Specific IPs

   location /admin {
       allow 192.168.1.0/24;  # Allow access only from this subnet
       deny all;               # Deny access from all other IPs
   }

Rate Limiting

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

   location / {
       limit_req zone=mylimit;  # Limit the rate of requests to 10 per second
   }

Enable HTTPS

   server {
       listen 80;
       server_name yourdomain.com;
       return 301 https://$host$request_uri;
   }

   server {
       listen 443 ssl;
       server_name yourdomain.com;
       ssl_certificate /path/to/certificate.crt;
       ssl_certificate_key /path/to/private.key;
   }

Conclusion

By using Nginx to block unwanted paths, you can proactively secure your application, prevent unnecessary resource usage, and ensure sensitive files are not exposed. Implementing this simple configuration will not only improve the security of your application but also help maintain the efficiency of your server by blocking malicious requests before they reach your application. Start blocking unwanted paths today to secure your web application. 🚀

Have you ever wondered how you can create docker PHP Image from Scratch? Read more here

Leave a Reply

Your email address will not be published.