从django请求获取域名

时间:2017-02-14 07:37:59

标签: python django dns django-request

我有一个域名为www.example1.com的网站,最近我将另一个域dns www.example2.com指向包含www.example1.com的同一台服务器,因此www.example1.com和{{1}提供相同的代码,但域名应该是不同的,我想从django请求获取域名,如下所示

www.example2.com

因此,基于域名,我想将用户重定向到不同的网页,但每次使用def homepage(request): domain = request.META['HTTP_HOST'] if domain == 'www.example1.com': return HTTPResponseReredirect('/new/') elif domain == 'www.example2.com': return HTTPResponseReredirect('/old/') 时,输出都是IP地址request.META['HTTP_HOST'],如下所示

127.0.0.1:8001

但是如何获得实际的域名?

2 个答案:

答案 0 :(得分:1)

你是在gunicorn面前使用nginx吗?

根据这两个SO问题herehere,您的请求中存在错误的“HTTP_HOST”.META强烈建议您对nginx配置进行错误配置。

两个帖子的相关回复:

  似乎是这样的   proxy_set_header Host $http_host应更改为   应设置proxy_set_header Host $hostserver_name   适当地访问用于访问服务器的地址。

答案 1 :(得分:0)

request.META [' HTTP']显示服务器上的当前域名,如果域名没有绑定,则显示IP地址。

例如我在我的项目上有这个功能

def test(request):
   return HttpResponse("{}".format(request.META['HTTP_HOST']))
  1. 在本地服务器上显示我的测试功能

    enter image description here

  2. 在域名 aut0parts.site 的远程服务器上显示我的测试功能 enter image description here

  3. 我假设你在本地服务器上测试你的代码,这就是为什么你的输出是127.0.0.1:8001。如果您将域名设置为您的服务器,我认为一切都会有效:)