Приложение Django под suburl (обратный nginx + ISA), часть URL повторяется - PullRequest
1 голос
/ 20 ноября 2010

Извините, если это не то место, чтобы спрашивать.

У меня есть приложение django, обслуживаемое Gunicorn, которое переворачивается NginX, и оно переворачивается сервером ISA, поэтому у меня естьследующее:

ISA --> Nginx --> Gunicorn

ISA меняет www.mydomain.com/some/path/here на Nginx, а эта /myapp на Gunicorn (nginx и gunicorn находятся на одном сервере).

Проблема в том, чтоURL, например, базовый URL для доступа к этим приложениям:

www.mydomain.com/some/path/here/myapp/

Когда в представлении django есть действие, например, перенаправление, например: redirect(reverse('start')), URL должен быть

www.mydomain.com/some/path/here/myapp/start/

но я получаю

www.mydomain.com/some/path/here/some/path/here/myapp/start/

Как вы видите, повторяется some/path/here/, я предполагаю, что это делается сервером ISA, но я не уверен в этом.Что я здесь не так делаю?

В моем файле settings.py у меня есть:

BASE_PATH = '/some/path/here'
FORCE_SCRIPT_NAME = BASE_PATH + '/myapp'
LOGIN_URL = FORCE_SCRIPT_NAME + '/loginhere/'

urls.py:

...
url(r'^start/', 'testapp.views.start', name='start'),
...

Мой nginx.conf:

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;

    access_log /var/log/nginx/access.log;

    sendfile        on;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    upstream wawared {
        server 127.0.0.1:8000;
    }

    server {
        listen 80;
        server_name localhost;            

        access_log  /var/log/nginx/wawared.access.log;
        error_log   /var/log/nginx/wawared.error.log;

        location /static {
            root /path/to/static/files;
            expires 1d;
            gzip on;
        }

        location /myapp/ {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_pass  http://127.0.0.1:8000/;
            proxy_redirect off;
        }
    }
}
...