1

Я пытаюсь использовать Apache 2.2 для обратного прокси-сервера моего сервера Tomcat и обслуживать журналы Tomcat по пути /tomcat-logs. Это внутри образа Docker на основе Ubuntu 12.04, но это не должно быть проблемой.

000-default.conf:

<VirtualHost *:80>
  Alias /tomcat-logs /var/log/tomcat7
  ProxyPreserveHost on
  ProxyPass /tomcat-logs !
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
</VirtualHost>

httpd.conf:

<Directory />
  Order deny,allow
  Deny from all
</Directory>

<Directory /var/log/tomcat7>
  Order allow,deny
  Allow from all
  AllowOverride None
  Options +Indexes
</Directory>

Обратный прокси-сервер работает как положено, но когда я пытаюсь получить доступ к tomcat-logs/catalina.out, я получаю 403 Запрещено. Ошибка из журнала Apache:

(13)Permission denied: access to /tomcat-logs/catalina.out denied

Я проверил права доступа к файлам журналов и каталогам, ведущим к местоположению журнала, и все они 644 или 755.

Я нахожу странным то, что сообщение об отказе в доступе гласит «/tomcat-logs/catalina.out» вместо «/var/log/tomcat7/catalina.out».

У кого-нибудь есть какие-либо идеи?

ОБНОВИТЬ

Если я захожу на http://localhost/tomcat-logs/ в моем веб-браузере, я получаю следующую ошибку в моем журнале:

(13)Permission denied: access to /tomcat-logs/index.html denied
... Others similar to index.html

Так что директива Options +Indexes не используется. Поэтому я думаю, что Directory /var/log/tomcat7 игнорируется. Что может вызвать это?

ОБНОВИТЬ

Если я отбрасываю обратный прокси и использую DocumentRoot вместо Alias, я получаю ту же ошибку.

<VirtualHost *:80>
  DocumentRoot /var/log/tomcat7
</VirtualHost>

И ошибка:

(13)Permission denied: access to /catalina.out denied

При ведении журнала отладки полный журнал:

[Fri Jan 09 14:26:40 2015] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
[Fri Jan 09 14:26:40 2015] [info] Server built: Jul 22 2014 14:35:32
[Fri Jan 09 14:26:40 2015] [debug] worker.c(1757): AcceptMutex: sysvsem (default: sysvsem)
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1818): proxy: grabbed scoreboard slot 0 in child 428 for worker proxy:reverse
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1914): proxy: initialized worker 0 in child 428 for (*) min=0 max=25 smax=25
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1818): proxy: grabbed scoreboard slot 0 in child 429 for worker proxy:reverse
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1837): proxy: worker proxy:reverse already initialized
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1914): proxy: initialized worker 0 in child 429 for (*) min=0 max=25 smax=25
[Fri Jan 09 14:27:07 2015] [error] [client 172.17.42.1] (13)Permission denied: access to /catalina.out denied
[Fri Jan 09 14:27:07 2015] [debug] mod_deflate.c(700): [client 172.17.42.1] Zlib: Compressed 289 to 219 : URL /catalina.out

Запуск sudo aa-status на хосте дает:

apparmor module is loaded.
18 profiles are loaded.
18 profiles are in enforce mode.
  /sbin/dhclient
  /usr/lib/NetworkManager/nm-dhcp-client.action
  /usr/lib/connman/scripts/dhclient-script
  /usr/lib/cups/backend/cups-pdf
  /usr/lib/lightdm/lightdm-guest-session
  /usr/lib/lightdm/lightdm-guest-session//chromium
  /usr/lib/telepathy/mission-control-5
  /usr/lib/telepathy/telepathy-*
  /usr/lib/telepathy/telepathy-*//pxgsettings
  /usr/lib/telepathy/telepathy-*//sanitized_helper
  /usr/lib/telepathy/telepathy-ofono
  /usr/sbin/cups-browsed
  /usr/sbin/cupsd
  /usr/sbin/cupsd//third_party
  /usr/sbin/mysqld-akonadi
  /usr/sbin/mysqld-akonadi///usr/sbin/mysqld
  /usr/sbin/tcpdump
  docker-default
0 profiles are in complain mode.
10 processes have profiles defined.
10 processes are in enforce mode.
  /sbin/dhclient (9937) 
  /usr/lib/telepathy/mission-control-5 (3463) 
  /usr/sbin/cups-browsed (1405) 
  /usr/sbin/cupsd (3849) 
  /usr/sbin/mysqld-akonadi///usr/sbin/mysqld (3481) 
  docker-default (14568) 
  docker-default (15403) 
  docker-default (15406) 
  docker-default (15408) 
  docker-default (15409) 
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

После того, как я запустил aa-complain /etc/apparmor.d/docker я все еще получаю ошибку 403.

1 ответ1

1

Я нашел обходной путь, добавив пользователя www-data в группу adm с помощью usermod -a -G adm www-data . Кто-нибудь может пролить свет на то, почему это работает, но предоставление разрешений на чтение и выполнение другим для /var/log/tomcat7 - нет? Также не удалось изменить группу этого каталога на www-data.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .