nginx区分手机与电脑浏览器并进入相应站点
- 推荐的nginx区别手机和PC访问方法
- 利用前端js和后端nginx配合,js通过设置cookie来设定当前访问哪页面。
增加设置cookie的js代码,这段代码需要在移动网站和PC网站的所有页面都要放置。
function createCookie(name, value, days, domain, path) {
var expires = '';
if (days) {
var d = new Date();
d.setTime(d.getTime() + (days2460601000));
expires = '; expires=' + d.toGMTString();
}
domain = domain ? '; domain=' + domain : '';
path = '; path=' + (path ? path : '/');
document.cookie = name + '=' + value + expires + path + domain;
}
function readCookie(name) {
var n = name + '=';
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var c = cookies[i].replace(/^s+/, '');
if (c.indexOf(n) == 0) {
return c.substring(n.length);
}
}
return null;
}
function eraseCookie(name, domain, path) {
setCookie(name, '', -1, domain, path);
}
判断错误情况
移动版页面添加PC版链接
默认用户进来时会先判断UA,如果是手机端访问就会进入手机版,但也会存在误判进入手机版或者需要更多信息进入PC版,那么就需要在移动版的页面放入代码,让用户可以从移动版切换到web版并且下次访问会保留设置。
<a onclick="setCookie('iphone_mode', 'full', 1, 'xunkw.com')" target="_blank"href="https://xunkw.com" >电脑版</a>
PC版 页面添加移动版链接
<a onclick="deleteCookie('mobile_mode', 'xunkw.com');" target="_blank"href="https://xunkw.com" >手机版</a>
完整的pc配置nginx
upstream app_server {
server 0.0.0.0:9001;
}
server {
listen 80;
server_name www.lvtao.net;
root /path/to/main_site;
# ...
location / {
proxy_set_header X-Real-IP $remote_addr;
# ...
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
set $mobile_request '1';
}
if ($http_cookie ~ 'mobile_request=full') {
set $mobile_request '';
}
if ($mobile_request = '1') {
rewrite ^.+ http://m.lvtao.net$uri;
}
# serve cached pages ...
if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
}
}
手机移动版配置
upstream m_app_server {
server 0.0.0.0:9001;
}
server {
listen 80;
server_name m.lvtao.net;
root /path/to/mobile_site;
# ...
location / {
proxy_set_header X-Real-IP $remote_addr;
# ...
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
set $mobile_request '1';
}
if ($http_cookie ~ 'mobile_request=full') {
set $mobile_request '';
}
if ($mobile_request != '1') {
rewrite ^.+ https://www.lvtao.net$uri;
}
# serve cached pages ...
if (!-f $request_filename) {
proxy_pass http://m_app_server;
break;
}
}
}