Tracking Pixel Returning 404 Error on Nginx

After several attempts installing Mautic on a VPS with Aapanel and Nginx, and assembling my own configuration file since the ones found online were not working, I got everything functioning except for the tracking pixel. I believe there is an issue with my redirection configuration or something similar.

Request to: Results in: 404 Not Found nginx

While: Works perfectly.

I have already tried the following location blocks:

location ~ email/(.*).gif { try_files $uri /index.php?$args; }

location ~ mtc.js { try_files $uri /index.php?$args; }

location ~ mtracking.gif { try_files $uri /index.php?$args; }

location ~ ^/email/.+.gif$ { try_files /www/wwwroot/$uri /index.php?$args; access_log /var/log/nginx/pixel.log;

Note: I’m going to add my Nginx configuration in another post, so it looks better

Technical details:

  • 4.5GB KVM VPS
  • Cron jobs enabled
  • PHP 7.4
  • Panel: Aapanel
  • Nginx
  • No relevant error logs on the server related to this.

I would greatly appreciate any help in resolving this tracking pixel issue.

Here is my website’s Nginx configuration file:

    listen 80;
        listen 443 ssl http2;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/;

    #SSL-START SSL related configuration, do NOT delete or modify the next line of commented-out 404 rules
    #error_page 404/404.html;
    ssl_certificate    /www/server/panel/vhost/cert/;
    ssl_certificate_key    /www/server/panel/vhost/cert/;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;

    #ERROR-PAGE-START  Error page configuration, allowed to be commented, deleted or modified
    #error_page 404 /404.html;
    #error_page 502 /502.html;

    #PHP-INFO-START  PHP reference configuration, allowed to be commented, deleted or modified
    include enable-php-74.conf;
    location ~ ^/index\.php {
      fastcgi_split_path_info ^(/index\.php)(/.+)$;
      fastcgi_pass unix:/run/php/php7.4-fpm.sock;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_buffer_size 128k;
      fastcgi_buffers 256 16k; 
      fastcgi_busy_buffers_size 256k;
      fastcgi_temp_file_write_size 256k;
    location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;


    #REWRITE-START URL rewrite rule reference, any modification will invalidate the rewrite rules set by the panel
    include /www/server/panel/vhost/rewrite/;

    # Forbidden files or directories
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|
        return 404;

    # Directory verification related settings for one-click application for SSL certificate
    location ~ \.well-known{
        allow all;

    #Prohibit putting sensitive files in certificate verification directory
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        expires      30d;
        error_log /dev/null;
        access_log off;

    location ~ .*\.(js|css)?$
        expires      12h;
        error_log /dev/null;
        access_log off; 
    access_log  /www/wwwlogs/;
    error_log  /www/wwwlogs/;
        location / {
      try_files $uri $uri/ /index.php?$args;
    location ~ ^/s/dashboard$ {
      rewrite /s/dashboard /index.php last; 

     # Solve email tracking pixel not found
    location ~ mtc.js{
        try_files $uri /index.php?$args;
    location ~ mtracking.gif{
          try_files $uri /index.php?$args;
    # Solve JS Loading 404 Error
    location ~ (.*).js {
        try_files $uri /index.php?$args;
    #Bloquear accesso a archivos sensibles
    location ~ /\.ht {
    deny all; 
    #Habilitar gzip compression
    gzip on; 
    gzip_types text/plain text/css text/xml application/json;
    location ~*  \.(jpg|jpeg|png|ico|pdf)$ {
                expires 15d;

    # Don't log favicon
    location = /favicon.ico {
        log_not_found off;
        access_log off;


 location ~ focus/(.*).gif {
        try_files $uri /index.php?$args;

    location ~ email/(.*).gif {
        try_files $uri /index.php?$args;

Try these two.

Regards, M.

1 Like

It worked perfectly, although not directly in the config file but in a special section that Aapanel has for URL rewriter, a complete guide on what the config file for Aapanel with Nignix should be like is definitely missing, since it has a very different structure

Thanks very much buddy

1 Like

This topic was automatically closed 36 hours after the last reply. New replies are no longer allowed.