0

Django に fastcgi_pass するように Nginx をセットアップしましたが、「/」から Django を提供したくありません。「/django/sample/」のようなプレフィックスを URL に付けたいのですが、Django に渡される前に Nginx にそのプレフィックスを削除させます。このようにして、Django の内部は実際に「/」から提供されているように動作します。

次のように、ルーティングされる URL にプレフィックスを含めるように Django アプリを更新しようとしました。

urlpatterns = patterns('',
  '^', include(base_urlpatterns), # iff you wish to maintain the un-prefixed URL's too
  '^your_prefix/', include(base_urlpatterns),
)

そして、私は現在、次のように fastcgi_pass を実行しています。

#django sample
location /django/sample {
include fastcgi_params;
  fastcgi_pass 127.0.0.1:8024;
}

しかし、私の django アプリの URL には "/django/sample" のようなプレフィックスを含める必要があるため、これは適切な解決策ではありません。また、サーバー上でローカルに VS を実行する場合、URL が異なる必要がある可能性があることも意味します。

私は、1 つのサーバーから実行されるかなりの数の Django アプリを作成しますが、URL を使用して常にこのばかげたことを行う必要はなく、Django のすべての URL を更新することを忘れないでください。

nginxでこれを行う方法を見つけようとしてしばらくグーグルで調べてきましたが、何も見ていません。

そのため、Django に渡される前に、Nginx を使用してリクエスト内の「/django/sample」を削除しようとしています。誰もこれを以前にやったことがありますか?

4

1 に答える 1

0

あなたはこれに間違った方法でアプローチしています。Django に渡す前にプレフィックスを削除する理由はありません: サーバーを正しく設定している限り、Django はそれを認識し、{% url %}タグやreverse()呼び出しなどで自動的に使用します (もちろん、これらはすべてに使用しています)。あなたの URL は内部的に参照されます)。

FastCGI を使用して展開するためのドキュメントには、プレフィックスの設定方法の詳細が記載されています。特に、他の方法で機能させることができない場合FORCE_SCRIPT_NAMEは、プレフィックスの値を明示的に設定できるというアドバイスがあります。

于 2013-09-30T18:16:06.850 に答える