Redirect HTTP to HTTPS

Since February the 28th 2017 mailcow does come with port 80 and 443 enabled.

Do not use the config below for reverse proxy setups, please see our reverse proxy guide for this, which includes a redirect from HTTP to HTTPS.

Open mailcow.conf and set HTTP_BIND=0.0.0.0 - if not already set.

Now we need to redirect all requests other than autoconfig.* to HTTPS. You do not need to change anything in the template below.

Open data/conf/nginx/site.conf and add two new server configs at the top of that file:

server {
  listen 80;
  listen [::]:80;
  server_name autoconfig.*;
  root /web;
  location / {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass phpfpm:9002;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/autoconfig.php;
    try_files /autoconfig.php =404;
  }
}
server {
  listen 80 default_server;
  listen [::]:80 default_server;
  include /etc/nginx/conf.d/server_name.active;
  return 301 https://$host$uri$is_args$args;
}

In case you changed the HTTP_BIND parameter, recreate the container:

docker-compose up -d

Otherwise restart Nginx:

docker-compose restart nginx-mailcow