功能: 一个nginx代理转发,代理目标地址来自url中的host参数
1location / { 2 error_page 418 = @other; 3 recursive_error_pages on; 4 resolver 1.2.4.8; 5 set $host ''; 6 if ($query_string ~ host=(http(s)?:\/\/[^\/]+(.com|.cn)(.*)$)){ 7 set $host $1; 8 } 9 set $args_tmp &${args}; 10 if ($args_tmp ~* ^(.*)(&host=[https:\/\/|\w%@\.]*)(.*)$){ 11 set $args $1$3; 12 } 13 #除去参数开头可能带有&字符的情况 14 if ($args ~* ^&(.*)$){ 15 set $args $1; 16 } 17 if ($host != ''){ 18 # rewrite ".*" ${host}/?${args}? break; 19 proxy_pass ${host}/?$args; 20 #return 200 "${args}、${tag}"; 21 } 22 if ($host = ''){ 23 return 418; 24 } 25} 26location @other { 27 28 # 这里是TP的伪静态 29 try_files $uri $uri/ /index.php$is_args$query_string; 30}
