diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1f4df63 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM debian +COPY . /root +ADD ./conf/docker/init.sh / +RUN mkdir -p /var/www/echoIP \ + && mv /root/* /var/www/echoIP/ \ + && apt update \ + && apt install -y nginx curl \ + && apt install -y php7.3 php7.3-fpm php7.3-sqlite3 \ + && apt clean \ + && cp /var/www/echoIP/conf/nginx/docker/ip.conf /etc/nginx/conf.d \ + && chmod +x /init.sh +CMD ["sh","init.sh"] diff --git a/conf/docker/init.sh b/conf/docker/init.sh new file mode 100644 index 0000000..ed6a6d8 --- /dev/null +++ b/conf/docker/init.sh @@ -0,0 +1,3 @@ +service php7.3-fpm start +service nginx start +/bin/bash diff --git a/conf/nginx/docker/ip.conf b/conf/nginx/docker/ip.conf new file mode 100644 index 0000000..57e1f0e --- /dev/null +++ b/conf/nginx/docker/ip.conf @@ -0,0 +1,60 @@ +server { + listen 8080; + root /var/www/echoIP; + + set_real_ip_from 0.0.0.0/0; + real_ip_header X-Real-IP; + + location = / { + if ($http_user_agent ~* (curl|wget)) { + return 200 $remote_addr\n; + } + index index.html; + } + + location = /ua { + if ($http_user_agent ~* (curl|wget)) { + return 200 $http_user_agent\n; + } + default_type application/json; + return 200 $http_user_agent; + } + + location = /ip { + if ($http_user_agent ~* (curl|wget)) { + return 200 $remote_addr\n; + } + return 200 $remote_addr; + } + + location ~* ^/([^/]+?)$ { + set $request_ip $1; + if ($http_user_agent ~* (curl|wget)) { + proxy_pass http://127.0.0.1:8080/info/$request_ip; + } + } + + location ^~ /info { + set $is_cli 0; + set $is_https 0; + set $is_legal 0; + if ($uri ~* ^/info/?$) { + set $is_legal 1; + set $query ip=$remote_addr; + } + if ($uri ~* ^/info/([^/]+?)$) { + set $is_legal 1; + set $query ip=$1; + } + if ($is_legal = 0) { + return 404; + } + if ($http_user_agent ~* (curl|wget)) { + set $query $query&cli=true; + } + include fastcgi_params; + fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; + fastcgi_param QUERY_STRING $query; + fastcgi_param SCRIPT_FILENAME /var/www/echoIP/backend/queryInfo.php; + } +}