From 40933bb31081c6112b8d66a4df1cd24d6c4c0115 Mon Sep 17 00:00:00 2001 From: dnomd343 Date: Fri, 9 Jul 2021 19:36:04 +0800 Subject: [PATCH] refactor: nginx config file --- backend/getInfo.php | 3 ++- backend/queryInfo.php | 15 +++++++---- conf/nginx/docker.conf | 59 +++++++++++------------------------------- conf/nginx/ip.conf | 55 ++++++++++----------------------------- 4 files changed, 40 insertions(+), 92 deletions(-) diff --git a/backend/getInfo.php b/backend/getInfo.php index f2c269a..d481ce1 100644 --- a/backend/getInfo.php +++ b/backend/getInfo.php @@ -100,7 +100,8 @@ function getIPInfo($ip) { } } - if ($_GET['cli'] == "true") { // 使用命令行模式 + global $request; + if ($request['cli']) { // 使用命令行模式 $cli = "IP: ".$info['ip'] . PHP_EOL; $cli .= "AS: ".$info['as'] . PHP_EOL; $cli .= "City: ".$info['city'] . PHP_EOL; diff --git a/backend/queryInfo.php b/backend/queryInfo.php index 6a6a624..fc7caad 100644 --- a/backend/queryInfo.php +++ b/backend/queryInfo.php @@ -22,7 +22,7 @@ function preRount() { // 解析请求路径 } else if ($requestUri == '/version') { // URI -> /version $request['version'] = true; return; - } else if ($requestUri == '/info') { // URI -> /info + } else if ($requestUri == '/info' || $requestUri == '/info/') { // URI -> /info or /info/ $request['ip'] = getClientIP(); return; } else if ($requestUri == '/query') { // URI -> /query?xxx=xxx @@ -34,7 +34,11 @@ function preRount() { // 解析请求路径 } preg_match('#^/([^/]+?)$#', $requestUri, $match); // URI -> /{ip} if (count($match) > 0) { - $request['ip'] = $match[1]; + if ($request['cli']) { // 命令行模式 + $request['ip'] = $match[1]; + } else { + $request['error'] = true; + } return; } preg_match('#^/info/([^/]+?)$#', $requestUri, $match); // URI -> /info/{ip} @@ -91,9 +95,10 @@ function routeParam() { if ($request['cli']) { // 命令行模式 echo "Illegal Request" . PHP_EOL; } else { - $reply = array(); - $reply['status'] = 'F'; - $reply['message'] = 'Illegal Request'; + $reply = array( + 'status' => 'F', + 'message' => 'Illegal Request' + ); header('Content-Type: application/json; charset=utf-8'); echo json_encode($reply); } diff --git a/conf/nginx/docker.conf b/conf/nginx/docker.conf index 69ec84f..4d0f873 100644 --- a/conf/nginx/docker.conf +++ b/conf/nginx/docker.conf @@ -1,12 +1,20 @@ server { - listen 1601; - set $this 127.0.0.1:1601; + listen 127.0.0.1:1601; + set $my_host 127.0.0.1:1601; set_real_ip_from 0.0.0.0/0; real_ip_header X-Real-IP; root /var/www/echoIP; error_page 403 404 = /error.html; + location ^~ /assets {} + location = /index.html {} + location = /error.html {} + + location = /error { + index error.html; + } + location = /ua { if ($http_user_agent ~* (curl|wget)) { return 200 $http_user_agent\n; @@ -18,56 +26,19 @@ server { location = / { set $query_param ?justip=true&cli=true; if ($http_user_agent ~* (curl|wget)) { - proxy_pass http://$this/query$query_param; + proxy_pass http://$my_host/query$query_param; } index index.html; } - location = /ip { - set $query_param ?justip=true; + location / { + set $query_param $query_string; if ($http_user_agent ~* (curl|wget)) { set $query_param $query_param&cli=true; } - proxy_pass http://$this/query$query_param; - } - - location = /version { - set $query_param ?version=true; - if ($http_user_agent ~* (curl|wget)) { - set $query_param $query_param&cli=true; - } - proxy_pass http://$this/query$query_param; - } - - location ~* ^/([^/]+?)$ { - set $request_ip $1; - if ($http_user_agent ~* (curl|wget)) { - proxy_pass http://$this/info/$request_ip; - } - } - - location ^~ /info { - set $is_legal 0; - set $query_param ?cli=false; - if ($http_user_agent ~* (curl|wget)) { - set $query_param ?cli=true; - } - if ($uri ~* ^/info/?$) { - set $is_legal 1; - } - if ($uri ~* ^/info/([^/]+?)$) { - set $is_legal 1; - set $query_param $query_param&ip=$1; - } - if ($is_legal = 0) { - set $query_param $query_param&error=true; - } - proxy_pass http://$this/query$query_param; - } - - location = /query { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; + fastcgi_param QUERY_STRING $query_param; fastcgi_param SCRIPT_FILENAME /var/www/echoIP/backend/queryInfo.php; } -} +} \ No newline at end of file diff --git a/conf/nginx/ip.conf b/conf/nginx/ip.conf index c7f8c25..38318c5 100644 --- a/conf/nginx/ip.conf +++ b/conf/nginx/ip.conf @@ -34,13 +34,21 @@ server { server { listen 127.0.0.1:1601; - set $this 127.0.0.1:1601; + set $my_host 127.0.0.1:1601; set_real_ip_from 0.0.0.0/0; real_ip_header X-Real-IP; root /var/www/echoIP; error_page 403 404 = /error.html; + location ^~ /assets {} + location = /index.html {} + location = /error.html {} + + location = /error { + index error.html; + } + location = /ua { if ($http_user_agent ~* (curl|wget)) { return 200 $http_user_agent\n; @@ -52,56 +60,19 @@ server { location = / { set $query_param ?justip=true&cli=true; if ($http_user_agent ~* (curl|wget)) { - proxy_pass http://$this/query$query_param; + proxy_pass http://$my_host/query$query_param; } index index.html; } - location = /ip { - set $query_param ?justip=true; - if ($http_user_agent ~* (curl|wget)) { - set $query_param $query_param&cli=true; - } - proxy_pass http://$this/query$query_param; - } - - location = /version { - set $query_param ?version=true; + location / { + set $query_param $query_string; if ($http_user_agent ~* (curl|wget)) { set $query_param $query_param&cli=true; } - proxy_pass http://$this/query$query_param; - } - - location ~* ^/([^/]+?)$ { - set $request_ip $1; - if ($http_user_agent ~* (curl|wget)) { - proxy_pass http://$this/info/$request_ip; - } - } - - location ^~ /info { - set $is_legal 0; - set $query_param ?cli=false; - if ($http_user_agent ~* (curl|wget)) { - set $query_param ?cli=true; - } - if ($uri ~* ^/info/?$) { - set $is_legal 1; - } - if ($uri ~* ^/info/([^/]+?)$) { - set $is_legal 1; - set $query_param $query_param&ip=$1; - } - if ($is_legal = 0) { - set $query_param $query_param&error=true; - } - proxy_pass http://$this/query$query_param; - } - - location = /query { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; + fastcgi_param QUERY_STRING $query_param; fastcgi_param SCRIPT_FILENAME /var/www/echoIP/backend/queryInfo.php; } } \ No newline at end of file