• Не удается получить переменные окружения в nginx, как быть?

    Если используешь docker-compose то наверно самое простое будет создать файл
    docker-entrypoint.sh
    Со следующим содержимым:
    #!/bin/bash
    # shellcheck disable=SC2046
    # shellcheck disable=SC2016
    
    set -e
    for f in /etc/nginx/templates/*.conf; do
      filename=$(basename "$f" .template)
      envsubst < "$f" > "/etc/nginx/$filename"
    done
    
    # Start Nginx
    nginx -g 'daemon off;'


    Подключить конфиги nginx и файл docker-entrypoint.sh:
    volumes:
          - "./nginx/conf.d:/etc/nginx/templates:ro"
          - "./nginx/docker-entrypoint.sh:/var/docker-entrypoint.sh:ro"

    И подключить env файл с переменными:
    env_file:
          - "./env/VIRTUAL_HOST.env"


    Содержимое VIRTUAL_HOST.env:
    VIRTUAL_HOST=localhost

    И теперь можно использовать переменные в nginx файлах таким образом:
    server {
            server_name $VIRTUAL_HOST:8081;
    
            listen 80;
            root /app/web;
            index index.php;


    И теперь, при каждом старте контейнера, будет производиться замена переменных на их значения в конфигурационных файлах nginx.
    Ответ написан
    Комментировать
  • Как правильно указать сертификат для апи Telegram?

    Добавлю инфу для тек кто не в курсе.

    Сейчас Telegram уже принимает и само подписанные сертификаты и от Let's encrypt, достаточно установить сертификат на сервер, в случае с nginx:
    listen 443 ssl;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/domain/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/domain/fullchain.pem;

    и отправить fullchain.pem в телеграм командой:
    curl -F "url=https://domains/адрес вебхук" -F "certificate=fullchain.pem" "https://api.telegram.org/botTOKEN/setwebhook"
    Ответ написан
    Комментировать