На той же виртуальной машине работает другая служба с другим веб-сервером (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), поэтому контейнер, похоже, запустился правильно.
- Когда я пытаюсь запросить сайт из-за пределов контейнера (), я получаю ошибку 403 Forbidden.
Код: Выделить всё
curl -I http://localhost:8082
- Когда я пытаюсь запросить сайт изнутри контейнера (), я получаю ту же ошибку 403 Forbidden.
Код: Выделить всё
curl -I http://localhost:80
Код: Выделить всё
/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)
Код: Выделить всё
apt-get install 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
Однако имейте в виду, что один и тот же образ работает на моем ноутбуке и на второй виртуальной машине без необходимости изменять какие-либо разрешения.
Другие возможные причины:
- Конфигурация сервера: даже если я использовал стандартную конфигурацию, Я проверил все файлы конфигурации и не обнаружил никаких проблем.
- AppArmor, SELinux: ни один из них не существует в моем контейнере, и оба они деактивированы на хостах/виртуальных машинах.
- Брандмауэр: Брандмауэр на хосте отключен, но проблема не устранена.
Все это говорит о том, что проблема возникает в процессе инициализации контейнера, но только на одной ВМ. Похоже, это влияет на контейнеры с веб-серверами Apache2/httpd или Nginx, но не на веб-сервер Python. Это действительно расстраивает, потому что именно это и должны решать контейнеры — согласованная работа в разных средах.
Кто-нибудь сталкивался с этой проблемой или есть идеи, что мне следует попробовать дальше? Если вам нужна дополнительная информация, дайте мне знать.
Подробнее здесь: https://stackoverflow.com/questions/797 ... -forbidden