Активированный сокетом SystemW uWSGI для https

uWSGI поддерживает активацию через сокет (из systemd), но я смог заставить его работать только для http, а не для соединений https.

  • https без сокет-активации работает с
    • shared-socket =: 443
    • https-socket = = 0, / etc / ssl / certs / mycert_chained-certificate.crt, / etc / ssl / private / mycert_privatekey.pem
  • Похоже, что сокет, предоставляемый systemd, используется как http-сокет, а не как shared-сокет. Таким образом, https-socket = =0 не имеет ничего общего с.
  • Поскольку файловый дескриптор из systemd всегда равен 3, я попытался принудительно установить значение shared-socket в 3. Следующая команда в модуле systemd работает, когда не активирован через сокет, но все еще пытается привязаться к http-сокету, когда активирован через сокет

ExecStart=/bin/bash -c '/usr/bin/uwsgi_psgi --shared-socket $(/usr/bin/test -n "$LISTEN_FDS" && /bin/echo "fd://3" || /bin/echo "0.0.0.0:443") --ini /etc/uwsgi.ini'

  • Глядя на исходный код uwsgi, я обнаружил в core/setup_utils.c, что код, который привязывается к сокету systemd, окружен символом char *listen_pid = getenv("LISTEN_PID"); if (listen_pid) { ... }. Таким образом, я попытался сбросить LISTEN_PID, чтобы uWSGI не связывал http-сокет с файловым дескриптором 3. Но теперь uWSGI связывает shared-сокет со случайным номером порта (и не работает).

ExecStart = / bin / bash -c 'LISTEN_PID = / usr / bin / uwsgi_psgi --shared-socket $ (/ usr / bin / test -n "$ LISTEN_FDS" && / bin / echo "fd: // 3" || / bin / echo "0.0.0.0:443") --ini /etc/uwsgi.ini '

Кто-нибудь еще идеи? Любой намек очень ценится.

0 ответов

Другие вопросы по тегам