Hi,
I’m running Mailcow on one server and an Nginx reverse proxy on another server. I followed the official Mailcow reverse proxy guide:
https://docs.mailcow.email/post_installation/reverse-proxy/r_p/
The login page loads correctly, but after logging in I get a “Too many redirects” error in the browser.
The redirect loop seems to happen on /index.php.
In the docker logs I see repeated 302 responses:
php-fpm-mailcow-1 | 172.22.1.11 - 08/Mar/2026:16:29:39 +0000 "GET /index.php" 302
nginx-mailcow-1 | 77.175.125.86 - - [08/Mar/2026:16:29:39 +0000] "GET / HTTP/1.0" 302 0 "-" "Mozilla/5.0 ..."
php-fpm-mailcow-1 | 172.22.1.11 - 08/Mar/2026:16:29:39 +0000 "GET /index.php" 302
nginx-mailcow-1 | 77.175.125.86 - - [08/Mar/2026:16:29:39 +0000] "GET / HTTP/1.0" 302 0 "-" "Mozilla/5.0 ..."
This keeps repeating and eventually the browser stops with a redirect error.
this is the nginx config:
server {
server_name mail.example.com autodiscover.* autoconfig.*;
location /Microsoft-Server-ActiveSync {
proxy_pass http://192.168.x.x:8486/Microsoft-Server-ActiveSync;
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-Proto $scheme;
proxy_connect_timeout 75;
proxy_send_timeout 3650;
proxy_read_timeout 3650;
proxy_buffers 64 512k;
client_body_buffer_size 512k;
client_max_body_size 0;
}
location / {
proxy_pass http://192.168.x.x:8486/;
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-Proto $scheme;
client_max_body_size 0;
proxy_buffer_size 128k;
proxy_buffers 64 512k;
proxy_busy_buffers_size 512k;
}
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/mail.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = mail.example.com) {
return 301 https://$host$request_uri;
}
server_name mail.example.com autodiscover.* autoconfig.*;
listen 80 default_server;
listen [::]:80 default_server;
return 404;
}
Is there something else that needs to be configured when Mailcow is behind a reverse proxy on a different server?
Thanks!