# set $isluci "0"; set $canproxy "0"; set $browser "0"; set $need_redirect "0"; # set $finalvar ""; set $web_init ""; set $redirect_flag ""; # # set $target_upstream "unknow-http-host"; # if ($http_host) { set $target_upstream $http_host; } # if ($http_host = "api.miwifi.com"){ # break; # } if ($http_host = "www.miwifi.com"){ # rewrite ^(.*)$ $scheme://miwifi.com? break; # } # xiaoqiang doesn't act as htp server if ($http_host = "htp.miwifi.com"){ # close connection directly, without response return 444; } # 0.0.0.1:65535 no avaible # if ($server_port != "8098"){ # #it is NOT REDIRECT from WEBINITRDR, enable proxy # set $canproxy "1"; # } if ($server_port = "8098"){ # set $isluci "0"; # } if ($http_host = "miwifi.com"){ set $isluci "1"; } if ($http_host = "wifi.cmcc"){ set $isluci "1"; } if ($http_host = "miwifi.com:8098"){ set $isluci "1"; } if ($http_host = "xiaoqiang") { set $isluci "1"; } if ($http_host = "localhost"){ # set $isluci "1"; # set $canproxy "0"; } if ($host = $server_addr){ # set $isluci "1"; # } if ($remote_addr = $server_addr){ # set $isluci "1"; # set $canproxy "0"; # } if ($remote_addr = "127.0.0.1"){ # set $isluci "1"; set $canproxy "0"; } if ($remote_addr = "169.254.31.1"){ # set $isluci "1"; set $canproxy "0"; } if ($remote_addr = "169.254.31.2"){ # set $isluci "1"; set $canproxy "0"; } #================================================= # Most Andriod, xiaomi meizu... location ~* /generate_204 { set $need_redirect "1"; } if ($request_uri = "/generate_204"){ #keepalive_timeout 0; #trunked_transfer_encoding on; #rewrite ^/(.*)$ http://miwifi.com/cgi-bin/luci/web/init/? break; set $need_redirect "1"; } # http://connectivitycheck.android.com/generate_204 if ($http_host = "connectivitycheck.android.com"){ set $need_redirect "1"; } # Huawei stations if ($http_host = "www.google.com"){ set $need_redirect "1"; } if ($http_host = "www.baidu.com"){ set $need_redirect "1"; } if ($http_host = "www.youku.com"){ set $need_redirect "1"; } # Huawei mate9 if ($http_host = "appdlc.hicloud.com"){ set $need_redirect "1"; } # Huawei p9 if ($http_host = "go.10086.cn"){ set $need_redirect "1"; } # Honer 7 # location ~* /wifi/cw.html { if ($request_uri = "/cw.html"){ set $need_redirect "1"; } # Huawei P8 if ($http_host = "tools.3g.qq.com"){ set $need_redirect "1"; } if ($http_host = "nstool.netease.com"){ set $need_redirect "1"; } if ($http_host = "andmlbf.tj.ijinshan.com"){ set $need_redirect "1"; } if ($http_host = "superwifi.uodoo.com"){ set $need_redirect "1"; } # Huawei nova 2s # http://pms.mb.qq.com/rsp204 if ($request_uri = "/rsp204"){ set $need_redirect "1"; } # Windows 10 if ($request_uri = "/connecttest.txt"){ set $need_redirect "1"; } # Ios & Mac # iphoneSE ok if ($request_uri = "/hotspot-detect.html"){ set $need_redirect "1"; } # Mac air # http://captive.apple.com/9PKNOUXBu/R7MHe2CQN/rYzFX91CW.html # http://captive.apple.com/OJuct5VbaVJDcY/XAe70lsN0fSjX6/mpANOgjLN40nqy/dnbwYE7OXr1bDU.html #if ($request_uri = "/hotspot-detect.html"){ if ($http_host = "captive.apple.com"){ set $need_redirect "1"; } # http://www.thinkdifferent.us/oiWW89oMQMPKs/zCYinf5De6nHS/10XywYwXYaBRC.html if ($http_host = "www.thinkdifferent.us"){ set $need_redirect "1"; } # http://www.appleiphonecell.com/PHOCYq0enfJ3bL/ClRGRo6bfDzVyD/cI8HKTRNv8pTxP/2boZiUFgrvgXew/GeZg0rzZ8Szu3E.html if ($http_host = "www.appleiphonecell.com"){ set $need_redirect "1"; } if ($http_host = "www.itools.info"){ set $need_redirect "1"; } if ($http_host = "gsp1.apple.com"){ set $need_redirect "1"; } if ($http_host = "www.airport.us"){ set $need_redirect "1"; } if ($http_host = "push.apple.com"){ set $need_redirect "1"; } # if post, return 401 #if ($request_method = POST) { # return 401; #} # Redirect for browser if ($http_user_agent ~* "Mozilla|AppleWebKit|Chrome|Safari") { set $browser "1"; } # for need_redirect flag set $redirect_flag "$canproxy $isluci $need_redirect"; if ($redirect_flag = "0 0 1") { rewrite ^(.*)$ http://miwifi.com/init.html? break; } # from browser and not luci not proxy set $web_init "$canproxy $isluci $browser"; if ($web_init = "0 0 1") { rewrite ^(.*)$ http://miwifi.com/init.html? break; } set $finalvar "$canproxy $isluci"; # '0 0' is no access to webadmin, but come from webinitrdr, redirect to web init if ($finalvar = "0 0") { rewrite ^(.*)$ http://miwifi.com/init.html? break; #rewrite ^(.*)$ http://miwifi.com/cgi-bin/luci/web/init/hello? break; #rewrite ^(.*)$ http://miwifi.com/webinitrdr.html?webinitrdr=yes? break; #rewrite ^(.*)$ /webinitrdr.html?webinitrdr=yes? break; } # or client requesting us because it cached DNS result, proxy to upstream by http_host # to prevent miss cache if ($finalvar = "1 0") { rewrite ^(.*)$ /miwifi-goto-autoproxy.html? break; } # new init page location /init.html { # expires epoch; keepalive_timeout 0; add_header Cache-Control 'private,max-age=0'; add_header Content-Type "text/html;charset=utf-8"; } # #add_header MiCGI-Switch "$finalvar"; #add_header MiCGI-TproxyInfo "$dst_addr:$dst_port"; #add_header MiCGI-Upstream "$target_upstream"; #add_header MiCGI-Client-Ip $remote_addr; #add_header MiCGI-Host $host; #add_header MiCGI-Http-Host $http_host; #add_header MiCGI-Server-Ip $server_addr; #add_header MiCGI-Server-Port $server_port; #add_header MiCGI-Status LUAROOT; #add_header MiCGI-Preload no; # location /miwifi-goto-autoproxy.html { # internal; keepalive_timeout 0; # resolver 127.0.0.1; # add_header MiCGI-Switch "$finalvar"; #add_header MiCGI-TproxyInfo "$dst_addr:$dst_port"; add_header MiCGI-Upstream "$target_upstream"; add_header MiCGI-Client-Ip $remote_addr; add_header MiCGI-Host $host; add_header MiCGI-Http-Host $http_host; add_header MiCGI-Server-Ip $server_addr; add_header MiCGI-Server-Port $server_port; add_header MiCGI-Status AUTOPROXY; add_header MiCGI-Preload no; # proxy_redirect off; # proxy_set_header Host $target_upstream; # proxy_pass http://$target_upstream/$request_uri; # } location /webinitrdr.html { # expires epoch; keepalive_timeout 0; # add_header MiCGI-Switch "$finalvar"; #add_header MiCGI-TproxyInfo "$dst_addr:$dst_port"; add_header MiCGI-Upstream "$target_upstream"; add_header MiCGI-Client-Ip $remote_addr; add_header MiCGI-Host $host; add_header MiCGI-Http-Host $http_host; add_header MiCGI-Server-Ip $server_addr; add_header MiCGI-Server-Port $server_port; add_header MiCGI-Preload no; # add_header MiCGI-Status WEBINITRDR; add_header Cache-Control 'private,max-age=0'; add_header Content-Type "text/html;charset=utf-8"; # #return 503; # } location /diagnosis { expires -1; add_header MiCGI-Host $host; add_header MiCGI-Http-Host $http_host; add_header Content-Type "text/html;charset=utf-8"; root /www/xiaoqiang/; index index.html; } #