2010-10-21 2 views
1

Я пытаюсь использовать Nginx в качестве простой балансировки нагрузки для Джанго на примере Якоба Каплана-Мосса: http://github.com/jacobian/django-deployment-workshop http://python.mirocommunity.org/video/1689/pycon-2010-django-deployment-wDjango Nginx и Append слэши проблема

Если я перестану Nginx и есть апач слушать порт 80 все работает отлично. Если у меня есть apache, слушающий nginx, мои URL-адреса ломаются.

Когда nginx работает, http://184.106. ./admin/works, но http://184.106. ./admin (отсутствует завершение слэш) перерывы. Он перенаправляет на имя веб-сервера http://web1/admin/

Я знаю, что это nginx вызывает проблему, потому что перенаправление отлично работает в Apache и сервере django dev.

Вот nginx.conf, что работает:

# Nginx conf (/etc/nginx/nginx.conf). 

# 
# Basic setup 
# 

user www-data; 
error_log /var/log/nginx/error.log; 
pid /var/run/nginx.pid; 

# 
# Event/worker setup. 
# 

worker_processes 4; 
events { 
    worker_connections 100; 
} 

# 
# HTTP configuration 
# 

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

    # HTTP upstream for load balancers. 
    # Replace the IPs below with IPs (or names) of your upstream Apaches 
    upstream sitename { 
     server 10.X.X.X:8000; 
     server 10.X.X.X:8000; 
    } 

    # The actual HTTP sever. 
    server { 
     listen 80; 

     # Don't proxy static files like robots.txt and favicon.ico. 
     location ~ ^/(favicon.ico|robots.txt|sitemap.xml)$ { 
      alias /home/web/static/$1; 
     } 

     # Serve media directly out of Nginx for performance 
     location /media { 
      alias /home/media; 
     } 

     # Proxy everything else to the backend 
     location/{ 
      proxy_pass http://sitename; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
      add_header X-Handled-By $upstream_addr;  
     } 
    } 
} 
+0

Можно ли предположить, что у вас есть 'server_name' в этом блоке' server' где-нибудь? Это первая странная вещь, которую я вижу, хотя я не вижу, как она вызовет описанную вами проблему. – pjmorse

ответ

1

У меня была точно такая же проблема, которую вы имели, следуя примеру Nginx Иакова, и не имея слэш бы привести к неправильному переадресовывает. Ответ pjmorse помог мне, я установил server_name в блоке сервера (server {имя_сервера: vasir.net; ....), и он исправил проблему. Тем не менее, мне пришлось сначала перезапустить сервер и

+0

Извините, просто вернусь к этому. Где вы устанавливаете имя сервера? Я попытался в директиве «server» в конфигурации nginx, но он вызывает ошибки. – chris

+0

Спасибо за помощь. Имел пару вопросов, поэтому отправляюсь здесь. Поместите имена серверов в директиву «server {» в nginx.conf ПОСЛЕ «слушать 80»; и он будет выглядеть как «server_name yourdomain.com alias www.yourdomain.com;» – chris