新官网上线,但在手机上访问新官网的体验很差,要求在手机上访问新官网时访问旧官网,可以通过修改Nginx配置来实现自动跳转。
首先是新官网的Nginx配置文件加个跳转判断,通过user-agent判断来源是移动端还是PC端:

server {
    listen 80;
    server_name www.7d.com 7d.com; // 新官网域名
    rewrite .* https://$host$request_uri last;
} server {
    listen       443 ssl;
    server_name www.7d.com 7d.com;  // 新官网域名
    root  /data/7d;
    charset utf-8;
    ssl_certificate /usr/local/nginx/_.7d.com.crt;
    ssl_certificate_key /usr/local/nginx/_.7d.com.key;     rewrite /s1$ http://s1.7d.com/start last;     if ( $http_user_agent ~* "(Android|iPhone|Windows Phone|UC|Kindle)" ){ // 跳转判断
        rewrite  ^/(.*)$  https://m.7d.com$uri redirect; // redirect表示302跳转(暂时性转移) 
    }     
    ……
}

然后是旧官网的配置文件改成新域名,同样要做跳转判断,把不是移动端访问的请求跳转回新官网。

server {
    listen 80;
    server_name m.7d.com; // 旧官网域名
    rewrite .* https://$host$request_uri last;
} server {
    listen       443 ssl;
    server_name m.7d.com;  // 旧官网域名
    root  /data/7d;
    charset utf-8;
    ssl_certificate /usr/local/nginx/_.7d.com.crt;
    ssl_certificate_key /usr/local/nginx/_.7d.com.key;     rewrite /s1$ http://s1.7d.com/start last;     if ( $http_user_agent !~* "(Android|iPhone|Windows Phone|UC|Kindle)" ){ // ~前加个!,如果不是移动端访问,则跳转回新官网。
        rewrite  ^/(.*)$  https://m.7d.com$uri redirect; // redirect表示302跳转
    }     
    ……
}

这样就可以实现手机访问新官网7d.com的域名时,实际访问的是旧官网的内容。点击浏览器的地址栏,会发现域名是m.7d.com。

其实就是根据HTTP_USER_AGENT来做判断,利用Nginx做一个302跳转,如果rewrite语句中的最后一个单词redirect改为permanent,则表示301跳转(永久性转移)

Nginx配置——区分PC或手机访问不同域名的更多相关文章

  1. Nginx配置——区分PC或手机访问不同域名以及http跳转https

    新官网上线,但在手机上访问新官网的体验很差,要求在手机上访问新官网时访问旧官网,可以通过修改Nginx配置来实现自动跳转.首先是新官网的Nginx配置文件加个跳转判断,通过user-agent判断来源 ...

  2. 【转】Nginx区分PC或手机访问不同网站

    原文链接:http://www.nginx.cn/784.html 近几年来,随着手机和pad的普及,越来越多的用户选择使用移动客户端访问网站,而为了获取更好的用户体验,就需要针对不同的设备显示出最合 ...

  3. Nginx区分PC或手机访问不同网站

    近几年来,随着手机和pad的普及,越来越多的用户选择使用移动客户端访问网站,而为了获取更好的用户体验,就需要针对不同的设备显示出最合适的匹配,这样就是近年来流行的“响应式web设计”. 响应式web设 ...

  4. Nginx区分PC和手机

    目录 一.简介 二.配置 nginx识别手机端跳转到wap pc端跳转移动端 一.简介 有时候需要当手机访问PC站页面时自动跳转到对应的手机站页面. 二.配置 nginx识别手机端跳转到wap 即手机 ...

  5. nginx配置静态资源与动态访问分离【转】

    在前面的博客中<说说 NGINX 的配置及优化>的 2.5 小节里面,提到 location 模块是 nginx 中用的最多的,也是最重要的模块,负载均衡.反向代理.虚拟域名等都与它相关. ...

  6. nginx配置ssl证书实现https访问

    一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址:47.89.12.99 域名:bjubi.com 二,域名解析到服务器 在阿里云控制台-产品与服务-云解析DNS-找到需要解析的 ...

  7. 阿里云 nginx配置ssl证书实现https访问

    一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址:47.89.12.99 域名:bjubi.com 二,域名解析到服务器 在阿里云控制台-产品与服务-云解析DNS-找到需要解析的 ...

  8. [转帖]nginx配置ssl证书实现https访问

    https://www.cnblogs.com/tianhei/p/7726505.html 今天就是如此处理的 感觉挺不错的. 一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址 ...

  9. Nginx配置http跳转https访问

    Nginx强制http跳转https访问有以下几个方法 nginx的rewrite方法 可以把所有的HTTP请求通过rewrite重写到HTTPS上 配置 方法一 server{ listen ; s ...

随机推荐

  1. MySQL获取指定长度的字符串的函数left(s,n)和right(s,n)

    1.LEFT(s,n)函数返回字符串s开始的最左边n个字符. eg: select left(‘abcde12345‘,5);   ======>‘abcde‘ 2.RIGHT(s,n)函数返回 ...

  2. 2-4、nginx特性及基础概念-nginx web服务配置详解

    Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...

  3. web前端知识总结

    前言: 一直想着整理一下关于前端的知识体系和资料,工作忙了些,挤挤总会有的,资料很多,就看你能不能耐下心坚持去学了,要多学多敲多想,祝你进步~ 学习之前首先要大概了解什么是HTML ,CSS , JS ...

  4. Python 爬虫常用的库

    一.常用库 1.requests 做请求的时候用到. requests.get("url") 2.selenium 自动化会用到. 3.lxml 4.beautifulsoup 5 ...

  5. hdu 6169 Senior PanⅡ Miller_Rabin素数测试+容斥

    Senior PanⅡ Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Pr ...

  6. Centos7 linux下通过源码安装redis以及使用

    下载redis安装包 wget http://download.redis.io/releases/redis-5.0.3.tar.gz 解压压缩包 tar -zxvf redis-.tar.gz y ...

  7. 性能测试 Performance Test Report

    时间隔了很久,两年左右了吧,最近打开原来的测试报告,测试数据还是很漂亮的.TPS比我记忆中的要高很多. 数据中有些是定死了的(当时的要求),并发不是计算的,是用几个值跑起来试试看的.因为后期我们会用S ...

  8. Python缩进与if语句 空格的魅力

    缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例.if后面跟随条件,如果条件成立,则执行归属于if的一个代码块. 先看C语言的表达方式(注意,这是C,不是Python! ...

  9. 使用JDBC从数据库中查询数据的方法

    * ResultSet 结果集:封装了使用JDBC 进行查询的结果 * 1. 调用Statement 对象的 executeQuery(sql) 方法可以得到结果集 * 2. ResultSet 返回 ...

  10. Python 常见时间处理

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...