Проблема с контейнером Podman: веб-сервер Apache2/Nginx 403 запрещенApache

Ответить
Anonymous
 Проблема с контейнером Podman: веб-сервер Apache2/Nginx 403 запрещен

Сообщение Anonymous »

Я столкнулся с очень любопытной проблемой с контейнером Podman и уже несколько дней пытаюсь ее решить. Я хочу запустить Контейнер (1) с веб-сервером (Apache2/httpd) на виртуальной машине. Я пересылаю порт 80 этого веб-сервера на порт 8082 на хосте/виртуальной машине, а на хосте есть еще один веб-сервер, действующий как обратный прокси-сервер. Веб-сайт внутри контейнера должен быть доступен по адресу www.example.com/a_site/.
На той же виртуальной машине работает другая служба с другим веб-сервером (Python, Uvicorn) в Контейнере (2), который перенаправляется на порт 8081 и доступен по адресу www.example.com/another_site/. Эта настройка работает нормально.
Однако для веб-сервера в Контейнере (1) она не работает. Я получаю ошибку 403 Forbidden.
Сведения об изображении для веб-службы (цель тестирования)
Изображение для тестирования очень простое:
  • Оно обслуживает один HTML-файл, который загружает image.png (который также хранится внутри изображения podman).
  • Я использовал стандартную конфигурацию веб-сервера.
  • Не используется PHP, JavaScript или какие-либо другие сложные функции.
Что я пробовал:
  • Образ для Container (1) отлично работает на моем персональном компьютере (разные ОС (Ubuntu), разные Podman версии 4.9.3).
  • Тот же образ для Контейнера (1) работает на второй виртуальной машине (нашей виртуальной машине разработки) с той же настройкой, что и первая виртуальная машина, также без проблем. Обе виртуальные машины используют одну и ту же ОС (Oracle Linux Server 9.6) и одну и ту же версию, но первая виртуальная машина не имеет подключения к Интернету, что не повлияло на проблему (я проверял ее).
  • Я попытался создать образ из простого образа debian-slim, установив Apache2 и начав напрямую с образа httpd.
  • Я тестировал с использованием Nginx вместо Apache2/httpd внутри Контейнера (1), но я столкнулся с той же проблемой 403 Forbidden. Эта настройка отлично работает на моем персональном компьютере и второй виртуальной машине.
  • Я также протестировал образ со встроенным http.server Python с теми же файлами, и он работает нормально, без проблем. Это говорит о том, что обратный прокси-сервер на хосте/ВМ настроен правильно. Этот образ также работает на моем компьютере и второй виртуальной машине.
Как я проверял проблему:
  • Я могу войти в контейнер (1), поэтому контейнер, похоже, запустился правильно.
  • Когда я пытаюсь запросить сайт из-за пределов контейнера (

    Код: Выделить всё

    curl -I http://localhost:8082
    ), я получаю ошибку 403 Forbidden.
  • Когда я пытаюсь запросить сайт изнутри контейнера (

    Код: Выделить всё

    curl -I http://localhost:80
    ), я получаю ту же ошибку 403 Forbidden.
Это наводит меня на мысль, что веб-сервер внутри контейнера работает неправильно. Когда я проверяю журналы ошибок Apache (

Код: Выделить всё

/var/log/apache2/error.log
), я вижу следующее:

Код: Выделить всё

[Thu Oct 09 09:34:25.451475 2025] [mpm_event:notice] [pid 17:tid 17] AH00489: Apache/2.4.65 (Debian) configured -- resuming normal operations
[Thu Oct 09 09:34:25.451785 2025] [core:notice] [pid 17:tid 17] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'
libgcc_s.so.1 must be installed for pthread_exit to work
libgcc_s.so.1 must be installed for pthread_exit to work
[Thu Oct 09 09:34:26.453339 2025] [core:notice] [pid 17:tid 17] AH00051: child pid 18 exit signal Abort (6), possible coredump in /etc/apache2
[Thu Oct 09 09:34:26.454774 2025] [core:notice] [pid 17:tid 17] AH00051: child pid 19 exit signal Abort (6), possible coredump in /etc/apache2
libgcc_s.so.1 must be installed for pthread_exit to work
libgcc_s.so.1 must be installed for pthread_exit to work
... (continued many times)
Я попытался исправить эту ошибку, установив GCC (

Код: Выделить всё

apt-get install gcc
) внутри изображения, но это ничего не изменило. Возможно, GCC не является подходящим пакетом для установки отсутствующей библиотеки.
Еще одна ошибка, обнаруженная в журналах:
Иногда я также вижу эту ошибку в журналах:

Код: Выделить всё

(13)Permission denied: [client 134.130.30.100:33628] AH00035: access to /image.png denied (filesystem path '/usr') because search permissions are missing on a component of the path
Эта ошибка и поиск по запросу 403 Forbidden предполагают, что права доступа к файлу или папке отсутствуют. Я протестировал изменение разрешений и владельцев файлов в контейнере (1) как для веб-серверов Apache2, так и для Nginx. Файлам (например, index.html) присвоен номер 644, а содержащейся в них папке — номер 755. Это не помогло. Я также попытался предоставить разрешения 755 для всех родительских папок.
Однако имейте в виду, что один и тот же образ работает на моем ноутбуке и на второй виртуальной машине без необходимости изменять какие-либо разрешения.
Другие возможные причины:
  • Конфигурация сервера: даже если я использовал стандартную конфигурацию, Я проверил все файлы конфигурации и не обнаружил никаких проблем.
  • AppArmor, SELinux: ни один из них не существует в моем контейнере, и оба они деактивированы на хостах/виртуальных машинах.
  • Брандмауэр: Брандмауэр на хосте отключен, но проблема не устранена.
Вывод:
Все это говорит о том, что проблема возникает в процессе инициализации контейнера, но только на одной ВМ. Похоже, это влияет на контейнеры с веб-серверами Apache2/httpd или Nginx, но не на веб-сервер Python. Это действительно расстраивает, потому что именно это и должны решать контейнеры — согласованная работа в разных средах.
Кто-нибудь сталкивался с этой проблемой или есть идеи, что мне следует попробовать дальше? Если вам нужна дополнительная информация, дайте мне знать.

Подробнее здесь: https://stackoverflow.com/questions/797 ... -forbidden
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»