Я пытаюсь использовать 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.