Mailman and nginx

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.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.