Redirect nginx中的重定向
我对nginx非常陌生,在配置简单重定向时遇到了麻烦。 下面是我非常简单的配置文件:Redirect nginx中的重定向,redirect,nginx,Redirect,Nginx,我对nginx非常陌生,在配置简单重定向时遇到了麻烦。 下面是我非常简单的配置文件: server { listen 80 default_server; set $mobile "false"; if ($http_user_agent ~* '(phone|droid)') { set $mobile "true"; } if ($mobile = true) { return 301 http://X.X.X.X
server {
listen 80 default_server;
set $mobile "false";
if ($http_user_agent ~* '(phone|droid)') {
set $mobile "true";
}
if ($mobile = true) {
return 301 http://X.X.X.X/mobile$request_uri;
}
location /mobile {
include uwsgi_params;
uwsgi_pass unix:/var/www/video_m/video.sock;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/var/www/video/video.sock;
}
}
当从桌面转到站点时,一切正常,我的请求将发送到uwsgi。
但在移动设备上,我从浏览器中得到一个错误ERR_TOO_许多重定向和请求url看起来像
很明显,我遗漏了一些基本的、可能非常简单的东西。请帮帮我。您已经创建了一个循环。第一次点击
if/return
时,添加了/mobile
前缀。然后,URI再次出现,并在同一语句中添加另一个/mobile
前缀,这将继续重复
要中断循环,您需要在第一次添加/mobile
前缀后不采用的路径中保护if/return
也许:
server {
listen 80 default_server;
location /mobile {
include uwsgi_params;
uwsgi_pass unix:/var/www/video_m/video.sock;
}
location / {
if ($http_user_agent ~* '(phone|droid)') {
return 301 $scheme://$host/mobile$request_uri;
}
include uwsgi_params;
uwsgi_pass unix:/var/www/video/video.sock;
}
}
试试“打破”在if块中-刚好低于设置的$mobile“true”;这对我不起作用。我仍然得到重定向循环。谢谢。我不知道在添加前缀后,请求从一开始就再次计算。