matomo-org / matomo-org/docker

Visits aren't saved behind proxy

Open
#333 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
Dominant language
Shell
Stars
1k
Forks
384
PR merge metrics
No merged PRs in 30d

Description

Hi,

I readed #295 and #210 and some other issues. If i run docker-compose logs -f and I use my celular I can see this on the logs:

docker-app-1 | 172.25.0.2 - 08/Sep/2023:08:28:07 +0000 "POST /matomo.php" 200
docker-web-1 | 172.23.64.99 - - [08/Sep/2023:08:28:07 +0000] "POST /matomo.php?action_name=Build%20de%20Domain&idsite=2&rec=1&r=108308&h=10&m=28&s=7&url=https%3A%2F%2Fwww.domain.eus%2Fes%2Finicio&_id=c872d29882a35929&_idn=0&send_image=0&_refts=0&pdf=1&qt=0&realp=0&wma=0&fla=0&java=0&ag=0&cookie=1&res=390x844&pv_id=pn4VxN&pf_net=444&pf_srv=1531&pf_tfr=0&pf_dm1=471&uadata=%7B%7D HTTP/1.0" 204 0 "https://www.domain.eus/" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1" "104.28.88.117"

but this visit is not stored on the database (I checked it).

I've configured 2 sites:
- Intranet => is working wall (but I need to enable geoip because it says all visits are from USA)
- External web => Data is send and received but not stored on the database and in the dashboard I have 0 visits.

This is my nginx reverse proxy config:

server {
listen 443;
server_name matomo.domain.eus;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;

location / {
proxy_pass https://matomo.domain.net/;

proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;

proxy_set_header Connection "";
}
}

Also this is my matomo.conf for nginx:

upstream php-handler {
server app:9000;
}

server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/file.crt;
ssl_certificate_key /etc/nginx/ssl/file.key;

add_header Referrer-Policy origin; # make sure outgoing links don't show the URL to the Matomo instance
root /var/www/html; # replace with path to your matomo instance
index index.php;
try_files $uri $uri/ =404;

## only allow accessing the following php files
location ~ ^/(index|matomo|piwik|js/index|plugins/HeatmapSessionRecording/configs).php {
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;

include fastcgi_params;
fastcgi_param REMOTE_ADDR $http_x_real_ip;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTP_PROXY ""; # prohibit httpoxy: https://httpoxy.org/
fastcgi_pass php-handler;
}

## deny access to all other .php files
location ~* ^.+\.php$ {
deny all;
return 403;
}

## disable all access to the following directories
location ~ /(config|tmp|core|lang) {
deny all;
return 403; # replace with 404 to not show these directories exist
}
location ~ /\.ht {
deny all;
return 403;
}

location ~ js/container_.*_preview\.js$ {
expires off;
add_header Cache-Control 'private, no-cache, no-store';
}

location ~ \.(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2|json)$ {
allow all;
## Cache images,CSS,JS and webfonts for an hour
## Increasing the duration may improve the load-time, but may cause old files to show after an Matomo upgrade
expires 1h;
add_header Pragma public;
add_header Cache-Control "public";
}

location ~ /(libs|vendor|plugins|misc/user) {
deny all;
return 403;
}

## properly display textfiles in root directory
location ~/(.*\.md|LEGALNOTICE|LICENSE) {
default_type text/plain;
}
}

I also edited config/config.ini.php and mounted via docker-compose volume option to override with this changes:

[General]
proxy_client_headers[] = HTTP_X_FORWARDED_FOR
proxy_host_headers[] = HTTP_X_FORWARDED_HOST
force_ssl = 1 ;please add this as well
assume_secure_protocol = 1 ;if you add this

Does anyone know why visit data is not being saved?
I don't know what else to try.....

thanks in advance

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running `docker-compose logs -f` as described, then inspect the reverse-proxy nginx server block, matomo.conf, and the mounted `config/config.ini.php`. Trace the external POST request through nginx and PHP-FPM and compare it with the working intranet site; done means external visits are stored and appear in the dashboard.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker-compose, nginx, php
Domain
backend, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.