Я установил apcupsd в новую установку CentOS 7, на которой работает Apache / 2.4.6 (CentOS).
Я установил CGI status для apcupsd, но продолжаю получать сообщение об ошибке при попытке доступа к странице с другой рабочей станции:
Forbidden
You don't have permission to access /apcupsd/upsstats.cgi on this server.
URL-адрес для него в локальной сети выглядит так:
http://mysite/apcupsd/upsstats.cgi?host=127.0.0.1&temp=F
Если я запустил этот URL-адрес в веб-браузере на сервере, он будет работать нормально.
Итак, я подумал, что Apache не знает, что apcupsd находится в / var / www / apcupsd, поэтому мне лучше пойти и рассказать.
Однако, когда я смотрю в /etc/httpd/conf.d, я вижу, что там есть apcupsd.conf, который выглядит так:
#
# apcupsd configuration file for Apache Web server
#
# files are off the documentroot of Web server
Alias /apcupsd /var/www/apcupsd
<Directory /var/www/apcupsd>
AddHandler cgi-script cgi pl
Options ExecCGI
</Directory>
#
# Allow only local access at default
# Change the ".example.com" to match your domain or modify
# access rights to your needs to enable remote access also.
#
<Directory "/var/www/apcupsd">
DirectoryIndex upsstats.cgi
AllowOverride None
Options ExecCGI Indexes
<IfModule mod_authz_core.c>
# Apache 2.4
Require local
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
Итак, я вижу, что там уже есть сценарий, сообщающий, что / apcupsd - это / var / www / apcupsd.
Однако это не работает для CGI, потому что я получаю сообщение об ошибке выше.
Нужно ли мне делать что-то еще, чтобы этот файл в conf.d загружался / выполнялся? Нужно ли редактировать /etc/httpd/conf/httpd.conf, если да, то почему и для чего, потому что я вижу, что в conf.d для apcupsd.conf делается "псевдоним". Похоже, все на месте и должно работать.
Что я упускаю из виду?
Имея два Directory
разделы для одного и того же каталога в большинстве случаев - плохая идея, поэтому объединяйте их вместе. Например, у вас есть Параметры в обоих, поэтому один всегда будет переопределять другой, поскольку оба они устанавливают параметры абсолютным образом.
Проверьте журнал ошибок. Apache всегда что-то регистрирует, когда генерирует сообщение 403 Forbidden. Если в журнале ничего нет, то либо вы смотрите не в том журнале, либо ваш CGI сам сгенерировал 403 (на самом деле есть еще одна возможность, но это крайний случай, если у вас есть RewriteRule
с флагом "F").
Еще один комментарий, директива Require local
Мне кажется, это не так, так вы действительно используете Apache v2.4?