2014-02-22 39 views
0

我在FastCGI的運行Django的模式Django的複製管理前綴的網址

./manage.py runfcgi method=threaded host=127.0.0.1 port=8080 

與Nginx的

server { 
    listen 80; 
    server_name myhostname.com; 
    access_log /var/log/nginx/sample_project.access.log; 
    error_log /var/log/nginx/sample_project.error.log; 

    location /static/ { # STATIC_URL 
     alias /home/www/myhostname.com/static/; # STATIC_ROOT 
     expires 30d; 
    } 

    location /media/ { # MEDIA_URL 
     alias /home/www/myhostname/static/; # MEDIA_ROOT 
     expires 30d; 
    } 

    location/{ 
     include fastcgi_params; 
     fastcgi_pass 127.0.0.1:8080; 
    } 
} 

管理URL是

http://myhostname.com/admin/ 

我發現,每一個HTML鏈接生成的錯誤如下圖所示

... 
<a href="/admin/admin/logout/">Log out</a> 
... 

下面我url.py

 

    from django.conf.urls import patterns, include, url 

    from django.contrib import admin 
    admin.autodiscover() 

    urlpatterns = patterns('', 
     # Examples: 
     # url(r'^$', 'configuratore.views.home', name='home'), 
     # url(r'^blog/', include('blog.urls')), 

     url(r'^admin/', include(admin.site.urls)), 
    ) 
 

看來,Django是複製管理URL,但我不明白爲什麼。

+0

你在'settings.py'中做了些奇怪的事嗎? (說定義你自己的'LOGIN_URL'或類似的東西?) – yuvi

+0

不,我沒有。錯誤出現在Nginx配置文件中。請參閱下面的接受答案。 – alesdario

回答

2

確保在nginx配置中將fastcgi_param SCRIPT_NAME "";添加到location /塊中。默認情況下,django預先設定它是扭轉url的值,因此設置爲空的url應該可以使其工作。