我有一个django项目,我希望根据所访问的子域显示不同的内容,例如,当用户输入url时:http://e1.example.com/它显示«欢迎来到e1站点»< / b>,当用户输入:http://e2.example.com时,会显示«欢迎使用e2网站»等等。
所以我有这个nginx配置:
upstream example_project{
server localhost:8200;
}
server {
listen 80;
server_name ~^(?<event>.+)\.example\.com;
location / {
proxy_pass http://example_project/$event$request_uri;
}
}
我的/etc/hosts
文件如下:
127.0.0.1 example.com
127.0.0.1 e1.example.com
127.0.0.1 e2.example.com
当我转到http://localhost:8200/e1/
时,它有效,但当我转到http://e1.example.com/
时,它显示 400错误
在django控制台输出上我有:
[18/Aug/2014 14:33:31] "GET /e1/ HTTP/1.1" 200 39 <-- this when going localhost:8200/e1/
[18/Aug/2014 14:33:33] "GET /e1/ HTTP/1.0" 400 26 <-- this when going e1.example.com
所以我可以看到e1.example.com
正在调用我的项目正确的网址,但为什么浏览器会向我显示400错误?
答案 0 :(得分:0)
好的,我意识到我必须为nginx添加更多代理参数,现在我的nginx配置为:
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://example_project/$event$request_uri;
}
结束everythnig工作就像期望的那样。 也许这可以帮助任何打算做类似事情的人。 :)