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/