浏览文章

文章信息

Nginx代理|反向代理|nginx 截断请求参数|移动端和PC之间访问跳转|if 多条件判断 17316

1、配置代理(简单版)

移动端Server

server
{
    listen 80;
    server_name bbs.m.aiweline.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /var/html/bbs.m.aiweline.com;
    ############# 作用代码 start ##################
    # 移动端rest接口代理
    location /rest {
      proxy_pass http://bbs.aiweline.com:80/rest;
    }
    # 移动端graphql接口代理
    location /graphql {
      proxy_pass http://bbs.aiweline.com:80/graphql;
    }
    # 移动端media资源代理
    location /media {
      proxy_pass http://bbs.aiweline.com:80/media;
    }
    #非移动端跳转到 bbs.aiweline.com
     if ($http_user_agent !~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
      rewrite  ^(.*) http://bbs.aiweline.com$1 permanent;
     }
    ############# 作用代码 end #################
 }

PC端Server

server
{
    listen 80;
    server_name bbs.aiweline.com;
    index index.php index.html index.htm default.php default.htm default.html;
    #root /var/html/bbs.aiweline.com;
    
     ############# 作用代码 start ##################
     # Nginx不支持多条件判断,只能以变量的形式来转化判断
     set $flag 'is';
     # 下面根据user_agent可以获取
     if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
       set $flag "${flag}_mobile";
     }
     # restApi 请求
     if ($request_uri ~* ^/rest){
        set $flag "${flag}_rest_api";
     }
     
     # graphql 请求
     if ($request_uri ~* ^/graphql){
        set $flag "${flag}_graphql_api";
     }
     
     # media 请求
     if ($request_uri ~* ^/media){
        set $flag "${flag}_media";
     }
     # api请求
     if ($request_uri ~* ^/api){
        set $flag "${flag}_api";
     }
     # 如果是移动端且不是接口则跳转移动端域名bbs.m.aiweline.com
     if ($flag = "is_mobile"){
        rewrite  ^(.*) http://bbs.m.aiweline.com$2 permanent;
     }
     # 如果是接口:反向代理  截取请求参数,反向代理回自身
     #if ($flag = "is_mobile_api"){
     #   rewrite  ^/(.*)/api(.*)$ http://bbs.aiweline.com$2 permanent;
     #}
     # 如果是接口:反向代理  截取请求参数,反向代理回自身
     #if ($flag = "is_mobile_media"){
     #   rewrite  ^/(.*)/api(.*)$ http://bbs.aiweline.com$2 permanent;
     #}
     # 如果是接口:反向代理
     #if ($flag = "is_mobile_rest_api"){
     #   rewrite  ^(.*)$ http://bbs.aiweline.com$1 permanent;
     #}
     ############# 作用代码 end ##################
 }


原创