6.23. Mailman and nginx

This FAQ will try to illustrate how to setup Nginx ( http://nginx.net/) for Mailman support.

Since Nginx does not supports CGI, we need an additional web server for serving CGI scripts.

In this FAQ I use thttpd (http://www.acme.com/software/thttpd/).

First of all, lets configure thttpd so that it can serve the CGI scripts defined in our system (I'm using Debian Etch).

Edit the /etc/thttpd/thttpd.conf and set:

  port=8000
  # Make sure to disable chroot
  nochroot
  user=www-data
  host=127.0.0.1
  # Serve all the CGI on the system
  dir=/usr/lib/cgi-bin
  cgipat=/**

Note that, by default, thttpd will generate index pages for directories and you usually do not want this.

You can either recompile thttd, undefining the GENERATE_INDEXES macro in config.h, or you can chmod 711 the individual directories.

Restart thttpd with

  /etc/init.d/thttpd restart

Now lets configure nginx.

Create a new file in /etc/nginx/sites-available, as an example lists.domain.com, an create a symbolic link in /etc/nginx/sites-enabled to enable the new site.

This configuration assumes that a virtual server can be dedicated to Mailman.

   server {
       listen   80;
       server_name  lists.domain.com;

       access_log  /var/log/nginx/lists.domain.com.access.log;

       # Show in the main page the list info
       rewrite ^/$ /mailman/listinfo last;

       location /mailman/ {
           # Use thttpd for CGI
           proxy_pass http://127.0.0.1:8000/mailman/;

           proxy_set_header Host $host;
           #proxy_intercept_errors on;
       }

       location /images/mailman/ {
           alias   /var/lib/mailman/icons/;
       }

       location /pipermail/ {
          alias   /var/lib/mailman/archives/public/;

       #error_page  404  /404.html;

       # redirect server error pages to the static page /50x.html
       #
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   /var/www/nginx-default;
      }
   }

NOTES: Nginx does not transfer, by default, the Server header from the proxied server response.

Moreover, if you enable proxy_intercept_errors, then all the errors from thttpd will be handled by nginx (but you need to create error pages, since a default nginx installation only has a custom 50x.html page).

This can be useful if you want to hide thttpd usage.

Last changed on Thu Nov 29 13:36:32 2007 by Manlio Perillo

7. What's new with Mailman 2.1?

Converted from the Mailman FAQ Wizard

This is one of many Frequently Asked Questions.