2

ドメインに次のような 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 を呼び出す必要があります)。

4

2 に答える 2

4

これを追加

location = / { rewrite ^(.*)$ /index.htm last; }

さらに処理する前に URI を書き換えるためrootに、行の下に追加します。

PS。あなたが尋ねて以来、あなたはおそらくこれを1年の間に整理したでしょうが、ここでは他の人が見ることができます.

于 2010-09-06T13:13:59.607 に答える
0

より良い解決策は、urls.py に / url を指定することです。

 root /var/www/$2/htdocs;

次に、静的アセットを提供するロケーション {} ブロックにのみルートを含めます。

于 2013-01-31T23:27:08.143 に答える