entrypoint.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/bin/sh
  2. # 定义证书路径
  3. CERT_DIR="/etc/nginx/certs"
  4. CRT_FILE="$CERT_DIR/server.crt"
  5. KEY_FILE="$CERT_DIR/server.key"
  6. # 确保目录存在
  7. mkdir -p "$CERT_DIR"
  8. # 如果证书不存在,生成自签名证书以防止Nginx启动失败
  9. if [ ! -f "$CRT_FILE" ] || [ ! -f "$KEY_FILE" ]; then
  10. echo "SSL certificates not found. Generating self-signed certificates..."
  11. openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  12. -keyout "$KEY_FILE" \
  13. -out "$CRT_FILE" \
  14. -subj "/C=CN/ST=State/L=City/O=Organization/CN=localhost"
  15. echo "Self-signed certificates generated."
  16. fi
  17. # 启动 Nginx (后台运行)
  18. echo "Starting Nginx..."
  19. nginx -g "daemon on;"
  20. # 启动文件监控循环
  21. echo "Starting SSL certificate monitor..."
  22. while true; do
  23. # 监控 /etc/nginx/certs 目录下的 modify, move, create, delete 事件
  24. inotifywait -e modify,move,create,delete -r "$CERT_DIR"
  25. echo "Certificate change detected. Testing configuration..."
  26. nginx -t
  27. if [ $? -eq 0 ]; then
  28. echo "Configuration valid. Reloading Nginx..."
  29. nginx -s reload
  30. else
  31. echo "Configuration invalid. Skipping reload."
  32. fi
  33. done