Назад | Перейти на главную страницу

Нужен ли ScriptAlias ​​в Apache 2, если путь указан в conf.d?

Я установил 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?