我有一个django应用程序,用于在iframe中提供一些用户内容。为了避免会话劫持,我想从不同的子域提供服务。
我目前在RecyclerView
托管的网站上的特定iframe内容位于subdomain.example.com
。我现在正尝试设置nginx,以便通过subdomain.example.com/foo/bar/ID
访问特定内容。
我的nginx设置:
foo.example.com/bar/ID
这在nginx server {
listen 80;
server_name subdomain.example.com;
location / {
include proxy_params;
#Served with gunicorn:
proxy_pass http://unix:/home/example/example.sock;
}
}
server {
listen 80;
server_name foo.example.com;
location / {
include proxy_params;
#This is key:
rewrite ^/(.*?) /foo$request_uri last;
#Served with gunicorn:
proxy_pass http://unix:/home/example/example.sock;
}
}
中给出了以下错误:
2016/01/24 14:10:41 [错误] 24286#0:* 17处理“/ foo / bar / 66”时重写或内部重定向循环,客户端:xx.xx.xx.xx,服务器: foo.example.com,请求:“GET / bar / 66 HTTP / 1.1”,主持人:“foo.example.com”
哪个有意义;重定向正在反复重定向,因为它与重写正则表达式匹配。
我尝试添加
error.log
无济于事。
如果没有重定向,它会正确托管,但我想避免将网址设为proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
。
有没有不同的方法来解决这个问题会更好?还是一种阻止重定向的方法?
PS:奖金问题?接下来会阻止subdomain.example.com/foo/bar,从而强制通过foo.example.com/bar进行访问编辑:我通过放弃重写并使用foo.example.com/foo/bar/ID
django-subdomains
(https://django-subdomains.readthedocs.org)
答案 0 :(得分:1)
这可能是您的奖金问题的解决方案(即如何阻止/ foo / bar来自www.example.com): https://stackoverflow.com/a/4677893/2319697
如果模式/位置匹配,基本上只返回404