【发布时间】:2010-11-25 10:54:57
【问题描述】:
我对域使用这样的 Nginx 配置:
server_name_in_redirect off;
listen 80;
server_name ~^(www\.)?(.+)$;
root /var/www/$2/htdocs;
location / {
try_files $uri $uri/ $uri/index.htm @django;
index index.html index.htm;
}
location @django {
fastcgi_pass 127.0.0.1:8801;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
fastcgi_param REMOTE_ADDR $remote_addr;
}
Django URL 配置:
urlpatterns = patterns('',
url(r'^$', home, name='home'),
url(r'index.htm', home, name='home'),
url(r'^(?P<name>.*).htm$', plain_page, name="plain_page"),
}
像http://domain.com/somepage.htm 这样的所有网址都可以正常工作,除了http://domain.com/ 它总是由 Nginx 显示 403。
如果您将静态 index.htm 文件添加到站点根目录 - 它是由于 try_files 指令而打开的
如果你没有静态index.htm,但是调用http://domain.com/index.htm页面是django打开的
如果你没有静态 index.htm 并打开 http://domain.com/ 你没有页面,但按想法 index.htm 应该被查看并作为 try_files 链中的最后一个传递给 django。
在这种情况下如何使http://domain.com/ 工作(应该调用django 的index.htm)?
【问题讨论】:
标签: django nginx django-urls