Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ RUN chmod +x /usr/local/bin/entrypoint.sh
USER 1001
# Environment variables for proxy configuration
#ENV PROXY_TARGET=
#ENV PROXY_HOST_HEADER=
#ENV MTLS_KEY_PATH=
#ENV MTLS_CERT_PATH=
#ENV MTLS_CA_CERT_PATH=
Expand Down
21 changes: 20 additions & 1 deletion entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,18 +1,33 @@
#!/bin/sh

# Set default values for optional configuration
MTLS_VERIFY_CERT=${MTLS_VERIFY_CERT:-"off"}
if [ -z "$MTLS_VERIFY_CERT" ]; then
if [ -z "$MTLS_CA_CERT_PATH" ]; then
MTLS_VERIFY_CERT="off"
else
MTLS_VERIFY_CERT="on"
fi
fi

# Generate conditional configuration strings
MTLS_CA_CONFIG=""
MTLS_VERIFY_CONFIG=""
MTLS_CERTIFICATES=""
HOST_HEADER_CONFIG=""

if [ -z "$PROXY_TARGET" ]; then
echo "[ERROR] PROXY_TARGET is a required env variable" >&2
exit 1
fi

if [ -z "$PROXY_HOST_HEADER" ]; then
PROXY_HOST_HEADER='$host'
else
echo "[INFO] Configuring Host override for ${PROXY_HOST_HEADER}"
fi

HOST_HEADER_CONFIG="proxy_set_header Host ${PROXY_HOST_HEADER};"

# Only add CA certificate configuration if MTLS_CA_CERT_PATH is set and file exists
if [ -n "$MTLS_CA_CERT_PATH" ] && [ -f "$MTLS_CA_CERT_PATH" ]; then
echo "[INFO] Using CA certificate: $MTLS_CA_CERT_PATH"
Expand All @@ -22,6 +37,9 @@ if [ -n "$MTLS_CA_CERT_PATH" ] && [ -f "$MTLS_CA_CERT_PATH" ]; then
if [ "$MTLS_VERIFY_CERT" != "off" ]; then
echo "[INFO] Enabling certificate verification: $MTLS_VERIFY_CERT"
MTLS_VERIFY_CONFIG="proxy_ssl_verify $MTLS_VERIFY_CERT;"
if [ -n "$MTLS_VERIFY_DEPTH" ]; then
MTLS_VERIFY_CONFIG="$MTLS_VERIFY_CONFIG\nproxy_ssl_verify_depth $MTLS_VERIFY_DEPTH;"
fi
fi
else
echo "[WARNING] No CA certificate configured or file not found. SSL verification disabled."
Expand All @@ -41,6 +59,7 @@ fi
export MTLS_CA_CONFIG
export MTLS_VERIFY_CONFIG
export MTLS_CERTIFICATES
export HOST_HEADER_CONFIG

# Start nginx with the original Docker entrypoint
exec /docker-entrypoint.sh "$@"
8 changes: 8 additions & 0 deletions proxy.conf
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,17 @@ server {

location / {
proxy_pass ${PROXY_TARGET};
# proxy_ssl_session_reuse off;
${HOST_HEADER_CONFIG}
${MTLS_CERTIFICATES}
${MTLS_CA_CONFIG}
${MTLS_VERIFY_CONFIG}

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_ssl_server_name on;
}

error_page 500 502 503 504 /50x.html;
Expand Down