我要做的是指定用户通过手机或网络访问我们网站的位置。这是我在启用站点的文件上的配置: 请注意评论由SHARP启动的线
map $http_user_agent $is_desktop {
default 0;
~*linux.*android|windows\s+(?:ce|phone) 0; # exceptions to the rule
~*spider|crawl|slurp|bot 1; # bots
~*windows|linux|os\s+x\s*[\d\._]+|solaris|bsd 1; # OSes
}
map $is_desktop $is_mobile {
1 0;
0 1;
}
server {
listen 80;
server_name example.com;
charset utf-8;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log /usr/logs/nginx/lion/lion.$year-$month-$day.log;
if ($is_mobile) {
location / {
root /usr/src/app1
}
if ($is_desktop) {
location / {
root /usr/src/app2;
}
}
error_page 405 =200 $uri;
}
请注意,域名不会更改,子域名将不会被使用
这就像使用不同的前端代码集在域上呈现一样,具体取决于所使用的设备。有可能吗?
答案 0 :(得分:1)
您可以使用device-detection等社区模块编译nginx。
或者您可以将以下内容与if语句一起使用。
## Testing a user agent using a method that reverts the logic of the
## UA detection. Inspired by notnotmobile.appspot.com.
map $http_user_agent $is_desktop {
default 0;
~*linux.*android|windows\s+(?:ce|phone) 0; # exceptions to the rule
~*spider|crawl|slurp|bot 1; # bots
~*windows|linux|os\s+x\s*[\d\._]+|solaris|bsd 1; # OSes
}
## Revert the logic.
map $is_desktop $is_mobile {
1 0;
0 1;
}
请注意,您应该添加缺少的代理字符串,并定期更新。
如果示例:
location / {
if ($is_mobile) {
root /usr/src/lion;
}
if ($is_desktop) {
root /usr/src/marty;
}
}
完整配置:
map $http_user_agent $is_desktop {
default 0;
~*linux.*android|windows\s+(?:ce|phone) 0; # exceptions to the rule
~*spider|crawl|slurp|bot 1; # bots
~*windows|linux|os\s+x\s*[\d\._]+|solaris|bsd 1; # OSes
}
map $is_desktop $is_mobile {
1 0;
0 1;
}
server {
listen 80;
server_name example.com;
charset utf-8;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log /usr/logs/nginx/lion/lion.$year-$month-$day.log;
location / {
if ($is_mobile) {
root /usr/src/app1;
break;
}
if ($is_desktop) {
root /usr/src/app2;
}
}
error_page 405 =200 $uri;
}