请教一个关于 Django 多个 App 多个独立域名的问题

2014-11-02 02:02:37 +08:00
 mornlight
django一般都是在urls.py 里映射url对应的view,比如:

url(r'^admin/', include(admin.site.urls)),
url(r'^$', views.index),
url(r'^signup/$', views.signup),

我使用的是uwsgi来跑python,在nginx处理请求:
location / {
root /data/www/django;
include uwsgi_params;
uwsgi_pass 127.0.0.1:9091;
}

这样的话,nginx里server的域名是可以正常使用的。

有一个需求是:我又增加了一个新的 App 在这个 django 项目里,它的路径是 /app/ 我希望把这个项目使用另一个独立的域名,而不是一个域名下的子目录,django本身配合nginx有办法做到吗?

自己目前想了一个办法是通过 nginx 代理实现的:
listen 8233;
server_name 127.0.0.1;

除了端口server_name外,其他配置和上面那个django项目本身一样,再对需要新增的域名做处理:

server {
listen 80;
server_name www.app.com;
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:8233/app/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 20s;
proxy_read_timeout 20s;
proxy_send_timeout 20s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
}
}

就是做了2层处理,可以实现我想要的效果,原来第一个域名+/app/ 也是可以同样访问的。

有没有其他更好的方式能实现?同时怎么最方便地屏蔽掉 第一个域名+/app/ 的访问方式?

搜了很久没找到类似的内容,另外,django官方的doc好像被墙了,主页正常。我这里上海电信、教育网、阿里云都ping不到ip了,香港的vps可以: https://docs.djangoproject.com/
6597 次点击
所在节点    问与答
1 条回复
odysseus
2014-11-12 15:02:13 +08:00
问得这么详细的问题,竟然没人回复!
试试django-hosts, pip install django-hosts
怒答之!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/143296

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX