Nginx学习总结(2)——Nginx手机版和PC电脑版网站配置

news/2024/5/9 21:00:51/文章来源:https://zhanghaiyang.blog.csdn.net/article/details/52838394

考虑到网站的在多种设备下的兼容性,有很多网站会有手机版和电脑版两个版本。访问同一个网站URL,当服务端识别出用户使用电脑访问,就打开电脑版的页面,用户如果使用手机访问,则会得到手机版的页面。

1、判断客户端的设备类型

要想让网站适配PC和手机设备,首先要能做出准确的判断。HTTP请求的Header中的User-Agent可以区分客户端的浏览器类型,可以通过User-Agent来判断客户端的设备。

无论是PC还是手机,由于操作系统、浏览器的多样性,自己来实现这个判断并不容易。好在国外有一套开源的通过User-Agent区分PC和手机的解决方案,可以直接使用:
http://detectmobilebrowsers.com/

由于本文使用Nginx,只要在网站上下载Nginx配置即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
set $mobile_rewrite do_not_perform;

if ($http_user_agent ~* "(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino") {
set $mobile_rewrite perform;
}

if ($http_user_agent ~* "^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-)") {
set $mobile_rewrite perform;
}

if ($mobile_rewrite = perform) {
# 手机
}

Nginx通过以上的配置,获取HTTP请求的User-Agent,使用正则表达式来匹配手机设备。

2、根据设备适配不同的页面

首先要准备好网站的PC版和手机版两套页面,通过之前对设备的判断,来反向代理到不同的版本:

1
2
3
4
5
6
location / {
proxy_pass http://192.168.20.1; # 电脑版
if ($mobile_rewrite = perform) {
proxy_pass http://192.168.20.2; # 手机版
}
}

如果是静态页面不需要反向代理,那么用root替换proxy_pass:

1
2
3
4
5
6
location / {
root /html/pc;
if ($mobile_rewrite = perform) {
root /html/mobile;
}
}

3、手机版链接到PC版

在用户打开页面后,如果进入了手机版,可能由于错误判断设备,或者用户想获取更多信息,可能会需要打开PC版。在手机版页面的底部,通常会有一个链接指向PC版:
电脑版链接电脑版链接
可以通过在点击“电脑版”链接的时候用JavaScript设置一个Cookie来实现这个功能:

1
<a href="http://xxx.com/" onclick="document.cookie = 'gotopc=true'">电脑版</a>

同时在Nginx配置中加入判断,如果包含此Cookie则进入PC版:

1
2
3
if ($http_cookie ~ 'gotopc=true') {
set $mobile_rewrite do_not_perform;
}

4、调试

完成以上配置后,可以通过Chrome浏览器来模拟手机、平板电脑等设备。
Chrome模拟手机Chrome模拟手机

最后给出完整的Nginx配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {  
listen 80;

set $mobile_rewrite do_not_perform;

if ($http_user_agent ~* "(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino") {
set $mobile_rewrite perform;
}

if ($http_user_agent ~* "^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-)") {
set $mobile_rewrite perform;
}

if ($http_cookie ~ 'gotopc=true') {
set $mobile_rewrite do_not_perform;
}

location / {
proxy_pass http://192.168.20.1; # 电脑版
if ($mobile_rewrite = perform) {
proxy_pass http://192.168.20.2; # 手机版
}
}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_711180.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress网站换个云服务器,wordpress更换服务器

wordpress更换服务器 内容精选换一换如果Linux操作系统云服务器未安装密码重置插件&#xff0c;可以参见本节内容重新设置密码。本节操作重置的是root用户的密码&#xff0c;您可以重置完root密码后登录云服务器后再更换秘钥或重置非root用户的密码。Windows操作系统请参见重置…

VMware产品演示网站

2015年4月28日, 下午1:19 包括了vClould Suite、Virtual SAN、vSphere with Operations Management、vRealize、vSphere 6.0等。都为幻灯片模式&#xff0c;如下图所示。虽然不是视频&#xff0c;但也能基本了解此些产品的功能及配置界面。 网址&#xff1a;http://featurewa…

定期删除网站日志php_tomcat实现定时删除日志

具体方法&#xff1a;(推荐教程&#xff1a;apache)一、创建脚本vim /root/project/tomcat_logs_task/auto-del-15-days-ago-log.sh# /bin/bash#定期删除tomcat 定期删除15天前的已分割日志#日志路径apache_tomcat_api_8079/root/app/apache-tomcat-job36-api-8079/logsapache_…

c++builder 运行网站的api_欧美音乐网站Python爬虫项目实战

爬虫项目实战0x01 目标分析最近发现一个比较好的欧美音乐下载网站&#xff0c;可以下载大部分高质量欧美音乐。该爬虫项目要实现自动化批量获取用户想要下载的音乐。本文从网站分析、爬虫设计、代码实现三个方面出发&#xff0c;系统介绍该爬虫项目。项目完整代码在Github中可以…

优秀常用网站汇总.txt

一、技术类 http://bbs.51cto.com http://www.epubit.com.cn/ https://www.printfriendly.com/ 浏览器插件&#xff0c;可下载51cto专栏等限制复制等页面为pdf https://www.csdn.net/ 二、Linux https://github.com http://www.ansible.com.cn(Ansible中文权威指南) h…

网站图片全自动加密_外卖优惠平台内容加密参数分析!你见过一块钱买外卖的吗?...

Js 加密的内容其实大同小异&#xff0c;目前咸鱼也在不断学习 APP 逆向的知识&#xff0c;之后会出一部分关于 APP 逆向在爬虫中的应用相关的文章&#xff0c;这部分设计的技能栈较广&#xff0c;大家可以先预习 Java 基础与 Android 基础。抓包与加密定位这个网站的加密部分是…

生日快乐网站_【总结 】文化自信源自基层贺房氏网站建站十五周年

重要提醒&#xff1a;2004年起创建房氏网(房氏网站fang.org.cn)及QQ群&#xff0c;收集房氏家谱、源流、名人、企业&#xff0c;搭建寻根、联谊等一体文化平台&#xff0c;专业专注于房氏文化&#xff0c;为全球100多万房家人服务的一个综合体&#xff0c;欢迎大家的加入与参与…

搭建网站-Disczu

搭建网站 更新时间&#xff1a; 2020/02/05 GMT08:00 查看PDF 分享 已有服务 搭建流程 准备软件 WinSCP WinSCP是在Windows环境下使用SSH的开源图形化SFTP客户端&#xff0c;用于在本地与远程计算机间安全的复制文件。下载地址&#xff1a;WinSCP Discuz X3.3软件包 请在…

搭建Magento电子商务网站

搭建Magento电子商务网站 更新时间&#xff1a;2020-05-08 18:34:32 编辑我的收藏 本页目录 前提条件背景信息操作流程步骤一&#xff1a;安装并配置Apache步骤二&#xff1a;安装并配置MySQL步骤三&#xff1a;安装并配置PHP步骤四&#xff1a;创建Magento数据库步骤五&am…

搭建Magento电子商务网站

搭建Magento电子商务网站 https://help.aliyun.com/document_detail/50704.html 更新时间&#xff1a;2020-05-08 18:34:32 编辑我的收藏 本页目录 前提条件背景信息操作流程步骤一&#xff1a;安装并配置Apache步骤二&#xff1a;安装并配置MySQL步骤三&#xff1a;安装并…

网站的服务器怎么维护,网站服务器怎么维护

网站服务器怎么维护 内容精选换一换云服务器使用&#xff0c;服务器使用&#xff0c;服务器配置&#xff0c;云主机使用&#xff0c;弹性云服务器入门&#xff0c;ecs使用来自&#xff1a;产品华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、AP…

iis日志字段解析 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)

网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置) https://www.cnblogs.com/fuqiang88/p/5870306.html 我们只能通过各种系统日志来分析网站的运行状况&#xff0c;对于部署在IIS上的网站来说&#xff0c;IIS日志提供了最有价值的信息&#xff0c;我们可以通过它来…

欧洲云计算巨头数据中心起火 350万家网站下线

欧洲云计算巨头数据中心起火 350万家网站下线 https://mp.weixin.qq.com/s/RGHI-UWAndz_cdZmgU5y2g 当地时间10日&#xff0c;法国东部下莱茵省省政府发布公告&#xff0c;当天凌晨法国大型网络服务商OVH公司位于下莱茵省首府斯特拉斯堡的数据中心起火&#xff0c;当地消防部…

收藏!50个帮你自我提升的网站

收藏&#xff01;50个帮你自我提升的网站 https://m.gmw.cn/toutiao/2021-03/31/content_1302199667.htm?tt_fromweixin&tt_group_id6945590883542958629&tt_fromweixin&utm_campaignclient_share&wxshare_count1&timestamp1617203663&appnews_artic…

ESXi日志分析网站第五版v5.4

ESXi日志分析网站第五版v5.4 https://mp.weixin.qq.com/s/mz3OVG7vw_wjUtSzFApBpQ 第5.4版更新 支持ESXI7.0版本及以上日志分析 常规性安全加固 ----------------------------华丽的分割线-------------------------------------- 第5.3版 更新: 1.在Host HCL info页面加…

nofollow标签_网站Nofollow标签的应用场景

nofollow标签是HTML的一个属性&#xff0c;用于告诉搜索引擎不要追踪特定的网页链接。减少垃圾对搜索引擎的排名影响。网站SEO优化nofollow标签的应用起到一定的作用。网站Nofollow标签的应用场景&#xff1a;1、nofollow标签通常用于论坛帖子、博客评价&#xff0c;这些地方存…

pyqt怎么button怎么链接_SEO内部链接怎么优化

站的内部链接一般是指在站内的A页面有相关链接指向到B页面。在网站的SEO优化中&#xff0c;做好内部链接的作业是SEOer们的基础作业之一。内部链接的目的除了进步整个网站的录入状况与频率之外&#xff0c;更重要的是引导使用者适时地引导至下一个相关页面中&#xff0c;让全体…

python壁纸数据抓取_python 多线程爬取壁纸网站的示例

基本开发环境・ Python 3.6・ Pycharm需要导入的库目标网页分析网站是静态网站&#xff0c;没有加密&#xff0c;可以直接爬取整体思路&#xff1a;1、先在列表页面获取每张壁纸的详情页地址2、在壁纸详情页面获取壁纸真实高清url地址3、保存地址代码实现模拟浏览器请请求网页&…

tp5写的系统比php源码写的慢多少,基于TP5框架开发的极速企业网站开发框架PHP源码...

源码介绍TPFrame保持了ThinkPHP5框架原有的所有特性&#xff0c;在ThinkPHP动力驱动模式下做了进一步的开发&#xff0c;对CBD模式做了更深的强化&#xff0c;优化核心&#xff0c;减少依赖&#xff0c;为个人或企业建站提供高效、快速解决的方案&#xff0c;是你快速做在线成品…

ssh传输越多越慢_Linux下分析网站访问慢原因

网站访问慢&#xff1f;这里我们在 Linux 来看看访问慢是为什么1. curl命令加参数方法1&#xff1a;curl -o /dev/null -s -w %{http_code}::%{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"" https://www.baidu.co…