grafana dashboard/login page is not loading, with status=302 on Grafana docker logs on Grafana and nginx redirect it to other application path as root
Grafana dashboard should be accescible via my-domain.com/grafana
Garafana docker logs:
<code>logger=context userId=0 orgId=0 uname= t=2024-05-25T20:25:46.077939618Z level=info msg="Request Completed" method=GET path=/ status=302 remote_addr=**.**.**.** time_ms=0 duration=81.455µs size=29 referer= handler=/ status_source=server
</code>
<code>logger=context userId=0 orgId=0 uname= t=2024-05-25T20:25:46.077939618Z level=info msg="Request Completed" method=GET path=/ status=302 remote_addr=**.**.**.** time_ms=0 duration=81.455µs size=29 referer= handler=/ status_source=server
</code>
logger=context userId=0 orgId=0 uname= t=2024-05-25T20:25:46.077939618Z level=info msg="Request Completed" method=GET path=/ status=302 remote_addr=**.**.**.** time_ms=0 duration=81.455µs size=29 referer= handler=/ status_source=server
Nginx Docker Logs:
<code>**.**.**.** - - [25/May/2024:20:33:11 +0000] "GET /grafana/ HTTP/1.1" 302 29 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" "**.**.**.**, **.**.**.**"
**.**.**.** - - [25/May/2024:20:33:12 +0000] "GET /login/ HTTP/1.1" 500 8900 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" "**.**.**.**, **.**.**.**"
</code>
<code>**.**.**.** - - [25/May/2024:20:33:11 +0000] "GET /grafana/ HTTP/1.1" 302 29 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" "**.**.**.**, **.**.**.**"
**.**.**.** - - [25/May/2024:20:33:12 +0000] "GET /login/ HTTP/1.1" 500 8900 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" "**.**.**.**, **.**.**.**"
</code>
**.**.**.** - - [25/May/2024:20:33:11 +0000] "GET /grafana/ HTTP/1.1" 302 29 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" "**.**.**.**, **.**.**.**"
**.**.**.** - - [25/May/2024:20:33:12 +0000] "GET /login/ HTTP/1.1" 500 8900 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" "**.**.**.**, **.**.**.**"
Docker compose file:
<code>grafana:
build: docker/grafana
restart: "always"
volumes:
- grafana_data:/var/lib/grafana
- ./grafana.ini:/etc/grafana/grafana.ini
environment:
- GF_INSTALL_PLUGINS=grafana-piechart-panel 1.6.2
- GF_SERVER_ROOT_URL=http://my-domain.com/grafana
- GF_SERVER_DOMAIN=my-domain.com
- GF_SERVER_SERVE_FROM_SUB_PATH=true
- GF_SECURITY_COOKIE_SAMESITE=disabled
networks:
- proxy-tier
nginx:
build:
context: docker/nginx
restart: "always"
depends_on:
- django
volumes:
- cache_media:/var/media:ro
- static_files:/static:ro
- "./docker/nginx/certs:/etc/nginx/ssl:ro"
- "./docker/nginx/proxy.conf:/etc/nginx/proxy.conf"
ports:
- "80:80"
- "443:443"
networks:
- proxy-tier
environment:
- DOMAINNAME_CLOUD_SERVER
</code>
<code>grafana:
build: docker/grafana
restart: "always"
volumes:
- grafana_data:/var/lib/grafana
- ./grafana.ini:/etc/grafana/grafana.ini
environment:
- GF_INSTALL_PLUGINS=grafana-piechart-panel 1.6.2
- GF_SERVER_ROOT_URL=http://my-domain.com/grafana
- GF_SERVER_DOMAIN=my-domain.com
- GF_SERVER_SERVE_FROM_SUB_PATH=true
- GF_SECURITY_COOKIE_SAMESITE=disabled
networks:
- proxy-tier
nginx:
build:
context: docker/nginx
restart: "always"
depends_on:
- django
volumes:
- cache_media:/var/media:ro
- static_files:/static:ro
- "./docker/nginx/certs:/etc/nginx/ssl:ro"
- "./docker/nginx/proxy.conf:/etc/nginx/proxy.conf"
ports:
- "80:80"
- "443:443"
networks:
- proxy-tier
environment:
- DOMAINNAME_CLOUD_SERVER
</code>
grafana:
build: docker/grafana
restart: "always"
volumes:
- grafana_data:/var/lib/grafana
- ./grafana.ini:/etc/grafana/grafana.ini
environment:
- GF_INSTALL_PLUGINS=grafana-piechart-panel 1.6.2
- GF_SERVER_ROOT_URL=http://my-domain.com/grafana
- GF_SERVER_DOMAIN=my-domain.com
- GF_SERVER_SERVE_FROM_SUB_PATH=true
- GF_SECURITY_COOKIE_SAMESITE=disabled
networks:
- proxy-tier
nginx:
build:
context: docker/nginx
restart: "always"
depends_on:
- django
volumes:
- cache_media:/var/media:ro
- static_files:/static:ro
- "./docker/nginx/certs:/etc/nginx/ssl:ro"
- "./docker/nginx/proxy.conf:/etc/nginx/proxy.conf"
ports:
- "80:80"
- "443:443"
networks:
- proxy-tier
environment:
- DOMAINNAME_CLOUD_SERVER
proxy.conf:
<code>proxy_set_header Host $host:$server_port;
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-Port $server_port;
proxy_set_header X-Forwarded-Server $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
</code>
<code>proxy_set_header Host $host:$server_port;
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-Port $server_port;
proxy_set_header X-Forwarded-Server $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
</code>
proxy_set_header Host $host:$server_port;
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-Port $server_port;
proxy_set_header X-Forwarded-Server $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
Nginx conf:
<code> location / {
proxy_pass http://$upstream_endpoint;
client_max_body_size 0;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 1200;
proxy_send_timeout 1200;
proxy_read_timeout 1200;
send_timeout 1200;
aio threads;
}
location ~ ^/(login|api(/?)(d*)/token-auth|api(/?)(d*)/login)/ {
limit_req zone=login burst=5;
proxy_pass http://$upstream_endpoint;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /grafana/ {
proxy_pass http://grafana:3000;
proxy_set_header Host $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-Proto $scheme;
proxy_redirect off;
rewrite ^/grafana(/.*)$ $1 break;
}
</code>
<code> location / {
proxy_pass http://$upstream_endpoint;
client_max_body_size 0;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 1200;
proxy_send_timeout 1200;
proxy_read_timeout 1200;
send_timeout 1200;
aio threads;
}
location ~ ^/(login|api(/?)(d*)/token-auth|api(/?)(d*)/login)/ {
limit_req zone=login burst=5;
proxy_pass http://$upstream_endpoint;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /grafana/ {
proxy_pass http://grafana:3000;
proxy_set_header Host $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-Proto $scheme;
proxy_redirect off;
rewrite ^/grafana(/.*)$ $1 break;
}
</code>
location / {
proxy_pass http://$upstream_endpoint;
client_max_body_size 0;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 1200;
proxy_send_timeout 1200;
proxy_read_timeout 1200;
send_timeout 1200;
aio threads;
}
location ~ ^/(login|api(/?)(d*)/token-auth|api(/?)(d*)/login)/ {
limit_req zone=login burst=5;
proxy_pass http://$upstream_endpoint;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /grafana/ {
proxy_pass http://grafana:3000;
proxy_set_header Host $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-Proto $scheme;
proxy_redirect off;
rewrite ^/grafana(/.*)$ $1 break;
}
Grafana.ini
<code>[server]
root_url = /grafana/
serve_from_sub_path = true
[auth.anonymous]
enabled = true
org_role = Viewer
[security]
admin_user = admin
admin_password = admin
</code>
<code>[server]
root_url = /grafana/
serve_from_sub_path = true
[auth.anonymous]
enabled = true
org_role = Viewer
[security]
admin_user = admin
admin_password = admin
</code>
[server]
root_url = /grafana/
serve_from_sub_path = true
[auth.anonymous]
enabled = true
org_role = Viewer
[security]
admin_user = admin
admin_password = admin
I have tested the scenario with including my domain.com/grafana in grafana/inin as well