我制作两个版本的网站,一个用于个人电脑,另一个用于移动电话。
pc版本通过django运行,指向reverse_proxy到http://127.0.0.1:8000/
。
虽然移动版仅提供/path/for/mobile
中的静态路径。
例如,我尝试了很多方法,但无法让它发挥作用。
location / {
if ($http_user_agent ~ Mobile) {
root /path/for/mobile;
}
else {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:8000;
}
}
答案 0 :(得分:0)
试试这个 - 如果是移动设备,请使用默认的root,否则使用proxy_pass。
location / {
set $mobile 0;
root /path/for/mobile;
if ($http_user_agent ~ Mobile) {
set $mobile 1;
}
if ($mobile = 0) {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:8000;
break;
}
}
答案 1 :(得分:0)
如果块被重写并返回,则nginx上唯一的安全操作 尝试类似:
if ($mobile = 0) {
add_header Content-Type text/plain;
return 200 "Desktop Version";
break;
}
验证您的$ mobile变量是否设置正确,然后:
if ($mobile = 0) {
rewrite ^ /desktopProxy/$request_uri;
}
location ~* ^/desktopProxy/(.*)$ {
...
proxy_pass http://127.0.0.1:8000/$1$is_args$args;
break;
}
我没有测试“$ 1 $ is_args $ args”条件,在使用prod之前验证。
答案 2 :(得分:0)
经过一番尝试,结果发现使用固定端口号的额外服务器效果很好。
if语句只影响一个数字变量,这会影响端口代理到任何内容的不同版本。
$from_date = '2016-12';
$to_date = '2017-03';