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

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

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

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

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

Пока я не добрался до той части, над которой нужно работать, набор .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.

Я не знаю, было ли это по умолчанию в предыдущих версиях 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 линия решила проблему.