浏览文章
文章信息
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 ################## }