nginx: SSI working on Apache backend, but not on gunicorn backend

Posted by j0nes on Server Fault See other posts from Server Fault or by j0nes
Published on 2013-10-31T14:46:56Z Indexed on 2013/10/31 15:58 UTC
Read the original article Hit count: 304

Filed under:
|
|

I have nginx in front of an Apache server and a gunicorn server for different parts of my website. I am using the SSI module in nginx to display a snippet in every page. The websites include a snippet in this form:

For static pages served by nginx everything is working fine, the same goes for the Apache-generated pages - the SSI include is evaluated and the snippet is filled. However for requests to my gunicorn backend running a Python app in Django, the SSI include does not get evaluated.

Here is the relevant part of the nginx config:

location /cgi-bin/script.pl {
    ssi on;
    proxy_pass http://default_backend/cgi-bin/script.pl;
    include sites-available/aspects/proxy-default.conf;
}

location /directory/ {
    ssi on;
    limit_req zone=directory nodelay burst=3;
    proxy_pass http://django_backend/directory/;
    include sites-available/aspects/proxy-default.conf;
}

Backends:

upstream django_backend {
    server dynamic.mydomain.com:8000 max_fails=5 fail_timeout=10s;
}
upstream default_backend {
    server dynamic.mydomain.com:80;
    server dynamic2.mydomain.com:80;
}

proxy_default.conf:

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;

What is the cause for this behaviour? How can I get SSI includes working for my pages generated on gunicorn? How can I debug this further?

© Server Fault or respective owner

Related posts about apache2

Related posts about nginx