zabbix/templates/entrypoints/lib/nginx.sh
2026-07-14 01:43:38 +09:00

82 lines
3.1 KiB
Bash

# shellcheck shell=bash
: "${NGINX_CONF_FILE:=/etc/nginx/nginx.conf}"
: "${NGINX_CONFD_DIR:=/etc/nginx/http.d}"
: "${NGINX_INCLUDES_DIR:=/etc/nginx/includes}"
: "${NGINX_SSL_CONFIG_DIR:=/etc/ssl/nginx}"
prepare_web_server() {
local fcgi_read_timeout
: > "${NGINX_INCLUDES_DIR}/access-log.conf"
: > "${NGINX_INCLUDES_DIR}/user.conf"
: > "${NGINX_INCLUDES_DIR}/real-ip.conf"
: > "${NGINX_INCLUDES_DIR}/listen-ipv6.conf"
: > "${NGINX_INCLUDES_DIR}/listen-ipv6-ssl.conf"
if [ "$(id -u)" -eq 0 ]; then
printf 'user %s;\n' "$DAEMON_USER" > "${NGINX_INCLUDES_DIR}/user.conf"
fi
info "** Adding Zabbix virtual host (HTTP)"
if [ -f "${ZABBIX_CONF_DIR}/nginx.conf" ]; then
ln -sfT "${ZABBIX_CONF_DIR}/nginx.conf" "${NGINX_CONFD_DIR}/nginx.conf"
if [ -f "/proc/net/if_inet6" ]; then
printf 'listen [::]:8080;\n' > "${NGINX_INCLUDES_DIR}/listen-ipv6.conf"
printf 'allow ::1;\n' >> "${NGINX_INCLUDES_DIR}/listen-ipv6.conf"
fi
else
warn "**** Impossible to enable HTTP virtual host"
: > "${NGINX_INCLUDES_DIR}/listen-ipv6.conf"
fi
if [ -f "${NGINX_SSL_CONFIG_DIR}/ssl.crt" ] && [ -f "${NGINX_SSL_CONFIG_DIR}/ssl.key" ] \
&& [ -f "${NGINX_SSL_CONFIG_DIR}/dhparam.pem" ]; then
info "** Enable SSL support for Nginx"
if [ -f "${ZABBIX_CONF_DIR}/nginx_ssl.conf" ]; then
ln -sfT "${ZABBIX_CONF_DIR}/nginx_ssl.conf" "${NGINX_CONFD_DIR}/nginx_ssl.conf"
if [ -f "/proc/net/if_inet6" ]; then
printf 'listen [::]:8443 ssl;\n' > "${NGINX_INCLUDES_DIR}/listen-ipv6-ssl.conf"
printf 'allow ::1;\n' >> "${NGINX_INCLUDES_DIR}/listen-ipv6-ssl.conf"
fi
else
warn "**** Impossible to enable HTTPS virtual host"
fi
else
warn "**** Impossible to enable SSL support for Nginx. Certificates are missing."
fi
: "${ZBX_MAXEXECUTIONTIME:=3}"
fcgi_read_timeout=$(( ZBX_MAXEXECUTIONTIME + 1 ))
: "${HTTP_INDEX_FILE:=index.php}"
[ -f "${NGINX_INCLUDES_DIR}/server-common.conf" ] && sed -i \
-e "s/{FCGI_READ_TIMEOUT}/${fcgi_read_timeout}/g" \
-e "s/{HTTP_INDEX_FILE}/${HTTP_INDEX_FILE}/g" \
"${NGINX_INCLUDES_DIR}/server-common.conf"
: "${EXPOSE_WEB_SERVER_INFO:=on}"
[[ "${EXPOSE_WEB_SERVER_INFO,,}" != "off" ]] && EXPOSE_WEB_SERVER_INFO="on"
[ -f "${NGINX_CONF_FILE}" ] && sed -i \
-e "s/{EXPOSE_WEB_SERVER_INFO}/${EXPOSE_WEB_SERVER_INFO}/g" \
"${NGINX_CONF_FILE}"
: "${ENABLE_WEB_ACCESS_LOG:=true}"
if [ "${ENABLE_WEB_ACCESS_LOG,,}" = "false" ]; then
printf 'access_log off;\n' > "${NGINX_INCLUDES_DIR}/access-log.conf"
else
printf 'access_log /dev/stdout main;\n' > "${NGINX_INCLUDES_DIR}/access-log.conf"
fi
if [ -n "${WEB_REAL_IP_FROM:-}" ]; then
printf 'set_real_ip_from %s;\n' "${WEB_REAL_IP_FROM}" > "${NGINX_INCLUDES_DIR}/real-ip.conf"
if [ -n "${WEB_REAL_IP_HEADER:-}" ]; then
printf 'real_ip_header %s;\n' "${WEB_REAL_IP_HEADER}" >> "${NGINX_INCLUDES_DIR}/real-ip.conf"
fi
fi
}