Я установил сценарий CGI на новую установку Apache 2.4 на сервере Ubuntu 14.04. Apache продолжает отвечать 403 Запрещено также, если для меня файл конфигурации в порядке. CGI - это интерфейс Monitorix, инструмент системного мониторинга, написанный на Perl.
Файл конфигурации /etc/apache2/conf-enabled/monitorix.conf
является:
Alias /monitorix /var/lib/monitorix/www
ScriptAlias /monitorix-cgi /var/lib/monitorix/www/cgi
<Directory /var/lib/monitorix/www/cgi/>
DirectoryIndex monitorix.cgi
Options ExecCGI
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order deny,allow
Allow from all
</IfModule>
</Directory>
Все файлы в /var/lib/monitorix/www
и /var/lib/monitorix/www/cgi
иметь хотя бы разрешение на чтение для всех. Каждый раз, когда я пытаюсь получить доступ с URL /monitorix
, в моем журнале Apache я вижу строки:
[Mon Sep 01 06:57:52.995680 2014] [authz_core:error] [pid 17145] [client x.x.x.x:58879] AH01630: client denied by server configuration: /var/lib/monitorix/www
[Mon Sep 01 07:00:10.131166 2014] [authz_core:error] [pid 17145] [client x.x.x.x:58903] AH01630: client denied by server configuration: /var/lib/monitorix/www
[Mon Sep 01 07:00:11.102614 2014] [authz_core:error] [pid 17145] [client x.x.x.x:58903] AH01630: client denied by server configuration: /var/lib/monitorix/www
...
Кроме того, я не могу понять, почему, когда я пытаюсь получить доступ по URL-адресу /monitorix-cgi
(Я получил идею из ScriptAlias
директива) я получаю 200 ок и Я вижу исходный код Perl из /var/lib/monitorix/www/cgi/monitorix.cgi
.
Некоторое время назад я установил этот инструмент на Debian, и у меня не было проблем, /monitorix
работал как ожидалось и /monitorix-cgi
правильно дал мне 403 Запрещено вместо отображения исходного файла Perl.
Обновить: об этой проблеме было сообщено в Monitorix и, возможно, фиксированный (# 69)
Когда вы открываете / monitorix в браузере, вы получаете доступ к / var / lib / monitorix / www. Блок вашего каталога разрешает доступ к / var / lib / monitorix / www /cgi, а не / var / lib / monitorix / www. Либо измените псевдоним на:
Alias /monitorix /var/lib/monitorix/www/cgi
или добавьте дополнительный блок Справочника:
<Directory /var/lib/monitorix/www/>
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order deny,allow
Allow from all
</IfModule>
</Directory>
Что касается просмотра источника cgi, вероятно, это конфигурация mod_cgi. Либо он не включен, либо не настроен для обработки файлов * .cgi. Возможно, вам потребуется добавить:
AddHandler cgi-script .cgi
на ваш виртуальный хост или блок каталога. Если это не сработает, попробуйте это в своей оболочке:
sudo a2enmod cgi
и следуйте инструкциям, чтобы перезагрузить apache. Если это по-прежнему не работает, добавьте комментарий ниже и, возможно, обновите свой вопрос. Я еще раз посмотрю и, возможно, настрою тестовую систему.
Я думаю, вам нужна строка Require:
Require all granted
У меня сработала следующая конфигурация (Apache 2.4):
<VirtualHost *:443>
ServerName your.server.com
DocumentRoot "/var/lib/monitorix/www"
AddHandler cgi-script .cgi
Alias /cgi /var/lib/monitorix/www/cgi
<Directory "/var/lib/monitorix/www">
Require all granted
</Directory>
<Directory "/var/lib/monitorix/www/cgi">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
</VirtualHost>
Файл /etc/monitorix/monitorix.conf выглядит так:
base_url = /
base_cgi = /cgi
И отключите встроенный сервис httpd:
<httpd_builtin>
enabled = n