From 79d82d2f5bd01527da0ea19058ccbd934f675177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=9C=EB=8F=99=ED=98=84?= <hando1220@ajou.ac.kr> Date: Sat, 15 Mar 2025 00:04:55 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20Nginx=20API=20=EC=97=94=EB=93=9C?= =?UTF-8?q?=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 4 ++++ rootfs/docker-entrypoint.sh | 4 +++- rootfs/etc/nginx/nginx.conf | 19 +++++++++++++++++++ rootfs/usr/lib/nginx-api/reload.sh | 15 +++++++++++++++ rootfs/usr/lib/nginx-api/test.sh | 15 +++++++++++++++ 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 rootfs/usr/lib/nginx-api/reload.sh create mode 100644 rootfs/usr/lib/nginx-api/test.sh diff --git a/Dockerfile b/Dockerfile index 33c1519..524d963 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,8 @@ RUN pnpm run build FROM nginx:stable-alpine +RUN apk add --no-cache fcgiwrap spawn-fcgi + COPY rootfs/ / COPY --from=build /app/dist /app/frontend @@ -25,6 +27,8 @@ ENV PUID=${PUID} ENV PGID=${PGID} RUN chmod +x /docker-entrypoint.sh +RUN chmod +x /usr/lib/nginx-api/reload.sh +RUN chmod +x /usr/lib/nginx-api/test.sh EXPOSE 80 81 443 diff --git a/rootfs/docker-entrypoint.sh b/rootfs/docker-entrypoint.sh index 970305b..ab4680d 100644 --- a/rootfs/docker-entrypoint.sh +++ b/rootfs/docker-entrypoint.sh @@ -4,6 +4,7 @@ set -e # Create necessary directories mkdir -p /data/custom_ssl /data/logs /data/access /data/nginx /data/letsencrypt-acme-challenge /data/nginx/default_host /data/nginx/default_www /data/nginx/proxy_host /data/nginx/redirection_host /data/nginx/stream /data/nginx/dead_host /data/nginx/temp mkdir -p /etc/letsencrypt /run/nginx /tmp/nginx/body /var/log/nginx /var/lib/nginx/cache/public /var/lib/nginx/cache/private /var/cache/nginx/proxy_temp +mkdir -p /var/run # Set proper permissions chown -R ${PUID:-1000}:${PGID:-1000} /data @@ -13,6 +14,7 @@ chown -R ${PUID:-1000}:${PGID:-1000} /tmp/nginx chown -R ${PUID:-1000}:${PGID:-1000} /var/cache/nginx chown -R ${PUID:-1000}:${PGID:-1000} /var/lib/nginx chown -R ${PUID:-1000}:${PGID:-1000} /var/log/nginx +chown -R ${PUID:-1000}:${PGID:-1000} /var/run -# Execute the main command +spawn-fcgi -s /var/run/fcgiwrap.socket -M 766 /usr/bin/fcgiwrap & exec "$@" diff --git a/rootfs/etc/nginx/nginx.conf b/rootfs/etc/nginx/nginx.conf index bda8d2c..9704ec6 100644 --- a/rootfs/etc/nginx/nginx.conf +++ b/rootfs/etc/nginx/nginx.conf @@ -48,6 +48,25 @@ http { default http; } + # Nginx api endpoints + server { + listen 8081; + listen [::]:8081; + server_name nginx-api; + + location /nginx-api/reload { + include /etc/nginx/fastcgi_params; + fastcgi_pass unix:/var/run/fcgiwrap.socket; + fastcgi_param SCRIPT_FILENAME /usr/lib/nginx-api/reload.sh; + } + + location /nginx-api/test { + include /etc/nginx/fastcgi_params; + fastcgi_pass unix:/var/run/fcgiwrap.socket; + fastcgi_param SCRIPT_FILENAME /usr/lib/nginx-api/test.sh; + } + } + # Files generated by Proxy Manager include /etc/nginx/conf.d/*.conf; include /data/nginx/proxy_host/*.conf; diff --git a/rootfs/usr/lib/nginx-api/reload.sh b/rootfs/usr/lib/nginx-api/reload.sh new file mode 100644 index 0000000..ac4dbb7 --- /dev/null +++ b/rootfs/usr/lib/nginx-api/reload.sh @@ -0,0 +1,15 @@ +#!/bin/sh +output=$(nginx -s reload 2>&1) +status=$? + +if [ $status -eq 0 ]; then + echo "Status: 200 OK" + echo "Content-Type: text/plain" + echo "" + echo "$output" +else + echo "Status: 500 Internal Server Error" + echo "Content-Type: text/plain" + echo "" + echo "$output" +fi \ No newline at end of file diff --git a/rootfs/usr/lib/nginx-api/test.sh b/rootfs/usr/lib/nginx-api/test.sh new file mode 100644 index 0000000..1628523 --- /dev/null +++ b/rootfs/usr/lib/nginx-api/test.sh @@ -0,0 +1,15 @@ +#!/bin/sh +output=$(nginx -t 2>&1) +status=$? + +if [ $status -eq 0 ]; then + echo "Status: 200 OK" + echo "Content-Type: text/plain" + echo "" + echo "$output" +else + echo "Status: 500 Internal Server Error" + echo "Content-Type: text/plain" + echo "" + echo "$output" +fi \ No newline at end of file -- GitLab