VirtualHost DocumentRoot cgi переходит в `/ var / www`

У меня есть веб-сервер на базе apache, который меня вызывают для обслуживания несколько раз в год. Для этого у меня есть локальное зеркало, чтобы я мог делать то, что требуется, а затем загружать изменения.

Я не знаю ' Я долгое время использовал apache для чего-то еще, и, поскольку я обновил свою рабочую станцию ​​с последнего раза, мне пришлось установить его. У меня есть файл .conf , который я помещаю в /etc/httpd/conf.d , и это никогда не было проблемой в прошлом.

Последняя версия apache, которую я использовал было вероятно 2.2, поэтому на этот раз с 2.4.18 я получил предупреждение об обесценивании NameVirtualHost , но фактический раздел казался в порядке .

Пока я не добрался до той части, над которой я должен работать, набор скриптов .cgi . Внутри VirtualHost .conf у меня есть:

<VirtualHost *:80>
        DocumentRoot /mnt/lan/foo/bar
        ServerName hullabaloo.mirror
        <Directory /mnt/lan/foo/bar/cgi-bin>
                Options +ExecCGI
                AddHandler cgi-script .cgi
        </Directory>
        [...]
</VirtualHost>

В этом каталоге есть .htaccess с тем же эффектом ( Options + ExecCGI ), который существует, потому что фактический производственный сервер настроен для этого (не мой отдел).

В любом случае, как уже упоминалось, большинство ссылок в порядке. Однако форма, в которой используется сценарий .cgi , возвращает 404, и в журналах я нахожу:

AH02811: script not found or unable to stat: /var/www/cgi-bin/search.cgi, referer: http://hullabaloo.mirror/search/index.html

Конечно, / var / www / cgi-bin ничего нет. Он находится в / mnt / lan / foo / bar / cgi-bin , который доступен для чтения процессом, а файл search.cgi является исполняемым файлом всего мира. Это то же самое дерево, из которого были извлечены локальные ссылки, и именно так я попал на http: //hullabaloo.mirror/search/index.html .

Ссылка на html-странице:

<form method="post" id="searchform" action="/cgi-bin/search.cgi">

Насколько я помню, все это работало нормально в последний раз, когда мне приходилось что-либо делать (около 6 месяцев назад); Я очень дотошный и внес бы изменения (это . conf файл является только частью моего зеркала) и / или оставил примечания.

В чем проблема? В пути / mnt / lan / foo / bar есть символическая ссылка, если это имеет значение для версии 2.4. Я еще не начал бросать дротики наугад.

Я просмотрел запрос, идущий от браузера к серверу, и он определенно использует http: //hullabaloo.mirror/cgi-bin/search .cgi в качестве URL.

0
задан 12 February 2016 в 21:26
1 ответ

Я не знаю, было ли это в предыдущих версиях apache по умолчанию в основном файле /etc/httpd/conf/httpd.conf или нет - это на самом деле из пакета Fedora.

<IfModule alias_module>

    [...]

    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

</IfModule>

Я понимаю, как это может быть связано с безопасностью в тех случаях, когда люди могут добавлять свои собственные файлы .htaccess или .conf , но могут ' Если изменить это, эти люди не должны запускать подпроцессы.

В любом случае, комментирование строки ScriptAlias ​​ решило проблему.

0
ответ дан 5 December 2019 в 10:42

Теги

Похожие вопросы