CERTBOT-NGINX отображает ошибку

"Процесс CGI", о котором вы говорите, - это программа CGI. CGI-программа может быть скриптом на любом языке или скомпилированным исполняемым файлом.

Детали того, как операционная система фактически выполняет код программы CGI (ваши шаги 2, 3, 4 и 5), на самом деле не нужны для понимания того, как работает CGI.

Вот как я думаю об этом (Ваши шаги 2-5 сжаты в шаг 2 здесь):

  1. Apache получает запрос - видит, что это запрос на CGI-программу
  2. Apache выполняет CGI-программу, передавая параметры из запроса CGI-программе в окружении (как переменные окружения).
  3. CGI-программа получает параметры из окружения, выполняет любую необходимую обработку и записывает веб-страницу на стандартный вывод.
  4. Apache получает веб-страницу из стандартного вывода программы CGI и передает ее веб-клиенту (обычно вашему веб-браузеру).

Большинство деталей, которые вы обсуждали в шагах 2-5, описаны на странице execve man (в Linux содержит примеры рабочего кода): man 2 execve. Вы также можете посмотреть на fork. Это отходит от темы CGI и переходит к теме модели процессов Unix. Лучше задать этот вопрос позже.

Точное и подробное описание CGI можно найти в интернет-проекте спецификации:
The WWW Common Gateway Interface Version 1.1

См. также
Apache Tutorial: Dynamic Content with CGI

0
31.07.2018, 15:54
2 ответа

Похоже, у вас есть случайный символ в одном из файлов nginx, который certbot не может прочитать. Возможно, кодировка символов в файле не соответствует символам, введенным в документ. Или поврежденный файл nginx.

Проверьте все файлы виртуального сервера, перечисленные в /etc/nginx/conf.d/. Re -создайте каждый файл в текстовом редакторе и сохраните файлы в используемой/предполагаемой кодировке.

0
28.01.2020, 02:42

Когда я в последний раз сталкивался с этим, это была ошибка с не -ASCII-символом в конфигурации nginx по умолчанию, которую LetsEncrypt пытается прочитать, чтобы добавить свою собственную конфигурацию. Следующая команда была полезна для поиска всех символов, отличных от -ASCII. (требует GNU grepдля-P):

grep -Rn --color='auto' -P "[\x80-\xFF]" /etc/nginx

В частности, обратите внимание на /etc/nginx/sites -enable/default. В системе, которую я только что проверил, это комментарий к строке 29, начинающийся с # ssl_protocols, и эта строка содержит не -символы ASCII (, что должно быть апострофом в «не» в этой строке ). ], который душит установку LetsEncrypt.

Вы можете либо удалить эти символы из этого файла, либо отключить конфигурацию по умолчанию. Если его нет в основной конфигурации nginx, у LetsEncrypt больше не должно быть этой ошибки.

1
28.01.2020, 02:42

Теги

Похожие вопросы