Proxying Zotonic with nginxΒΆ

It is possible to put Zotonic behind the nginx <> web server, for example if you have other, non-Zotonic virtual hosts running on your system.

When proxying, don’t forget to check the config files of the sites you are planning to server (the user/sites/your_site/config files). The hostname value should not contain any port number, if you run from port 80: {hostname, ""}.

Below is a configuration file we use to proxy nginx to zotonic. Be sure to replace all occurrences of with your own hostname:

server {
      listen 80;

      access_log  /var/log/nginx/;
      error_log  /var/log/nginx/;

      keepalive_timeout 65;
      gzip off;

      location / {
          proxy_redirect off;

          proxy_set_header   Host             $host;
          proxy_set_header   X-Real-IP        $remote_addr;
          proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

          client_max_body_size       50m;
          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;

      location /close-connection {
           keepalive_timeout 0;

See the nginx documentation for more information on its configuration procedure.

Previous topic

Using Varnish as frontend for Zotonic

Next topic

Useful environment variables