web-dev-qa-db-ja.com

DjangoブラウザでURLをIPアドレスとして書き換えます-なぜですか?

私はDjango、nginx、Apacheを使用しています。 URL(例: http://www.foo.com/ )を使用してサイトにアクセスすると、ブラウザーアドレスに表示されるのは、管理者が追加されたIPアドレス(例: http ://123.45.67.890/admin/ )。 IPでサイトにアクセスすると、Djangoのurls.pyによって期待どおりにリダイレクトされます(例: http://123.45.67.890/ -> http://123.45.67.890/アカウント/ログイン/?次= /

名前のURLをIPと同じように機能させたいのですが。つまり、URLが新しいビューに移動する場合、ブラウザアドレスのホストは同じままで、IPアドレスに変更されないようにする必要があります。これをどこで修正する必要がありますか?

私のファイル:

; cpa.com (Apache)
NameVirtualHost *:8080

<VirtualHost *:8080>

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/htm

DocumentRoot /path/to/root
ServerName www.foo.com

<IfModule mod_rpaf.c>
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1
</IfModule>

<Directory /public/static>
    AllowOverride None
    AddHandler mod_python .py
    PythonHandler mod_python.publisher
</Directory>

Alias / /dj
<Location />
    SetHandler python-program
      PythonPath "['/usr/lib/python2.5/site-packages/Django', '/usr/lib/python2.5/site-packages/Django/forms'] + sys.path"
    PythonHandler Django.core.handlers.modpython
    SetEnv Django_SETTINGS_MODULE dj.settings
    PythonDebug On
</Location>

</VirtualHost>

;

; ports.conf (Apache)
Listen 127.0.0.1:8080

;

; cpa.conf (nginx)
server { 

listen       80;
server_name  www.foo.com;

location /static {
    root   /var/public;
    index  index.html;
}

location /cpa/js {
    root   /var/public/js;
}

location /cpa/css {
    root   /var/public/css;
}

location /djmedia {
    alias "/usr/lib/python2.5/site-packages/Django/contrib/admin/media/";
}

location / {
include /etc/nginx/proxy.conf;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass   http://127.0.0.1:8080;
}
}

;

; proxy.conf (nginx)

proxy_redirect          off;
proxy_set_header        Host            $Host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      500;
proxy_buffers           32 4k;
5
Mitch

それはおそらくあなたのmod_rpaf構成であり、特に「RPAFsethostnameOn」行を推測しています。

10分間グーグルした後、mod_rpafのどこにもドキュメントがほとんどないか、まったくないことが明らかであるため、私は完全に自信がありません。これは、ほんの一握りの「私と私のファンシースタック」のブログ投稿でしか耳にすることのないようなもののようです。これは、Djangoレイヤーで同じように簡単に解決できる問題を解決し、ブログ投稿で読んだ誰かが謎のApacheモジュールを実行しないようにします。

それは実際には本のミドルウェアの章でカバーされています: http://www.djangobook.com/en/2.0/chapter17/

1
cagenut