ドメインに次のような 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のようなすべての URL は正常に機能しますが、 http ://domain.com/を除き、常に Nginx によって 403 が表示されます。
静的な index.htm ファイルをサイトのルートに追加すると、try_files ディレクティブのために開かれます
静的な index.htm がないが、http: //domain.com/index.htm を呼び出すと、django によってページが開かれます
buf 静的な index.htm がなく、http: //domain.com/ を開くとページが表示されませんが、考えによって index.htm を調べて、try_files チェーンの最後として django に渡す必要があります。
この場合、 http://domain.com/を機能させるには (django の index.htm を呼び出す必要があります)。