Você tentou criar uma nova pasta com um link simbólico para o seu cgi "aberto"?
Estou tentando permitir o acesso não autenticado a determinados scripts em uma instalação do Nagios. Embora a questão não seja especificamente sobre o Nagios nem o manuseio do CGI, que também é ilustrado abaixo.
Essencialmente, desejo exigir autenticação para qualquer coisa em um diretório específico:
http://example.com/nagios/cgi-bin/....
exceto por dois caminhos específicos:
http://example.com/nagios/cgi-bin/avail.cgi....
http://example.com/nagios/cgi-bin/trends.cgi....
Atualmente, tenho o Apache configurado para exigir autenticação para todo o acesso ao link
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
Eu prefiro não replicar os scripts em um diretório diferente, pois este é um software empacotado e quero minimizar o esforço de suporte - não sei ao certo quais URLs dentro do pacote usam caminhos canônicos.
editar:
Posso usar um FilesMatch em vez do bloco Direcory? Se sim, o Apache regexe PCRE ou POSIX?
Editar 3:
Usando
<FilesMatch "/(cgi-bin\/)(?!trends.cgi)(?!avail.cgi)/">
remove a autenticação de todos os URLs no diretório: (
Eu também tentei replicar os scripts avail.cgi e trends.cgi em um diretório diferente. Isso parece funcionar - mas os formulários não são preenchidos com nenhum dado da minha configuração do Nagios! Parece que existe uma camada adicional de autenticação embutida no código do Nagios. Isso também iria contra a abordagem "Exigir qualquer / permitir de ip". : (
Embora o comportamento revisado no MSIE possa estar correto, wrt rfc 2396 está me causando terríveis dores de cabeça!
Se você tiver um segundo endereço IP disponível no servidor, pode tentar executar um proxy reverso nesse endereço IP que apenas encaminha esses dois locais e faz a autenticação HTTP.
<VirtualHost secondIP:80>
ProxyPassMatch ^\/nagios\/cgi-bin\/(trends|avail)\.cgi$ "http://127.0.0.1/nagios/cgi-bin/"
ProxyPassReverse /nagios/cgi-bin/ "http://127.0.0.1/nagios/cgi-bin/"
</VirtualHost>
Eu não tentei se isso funcionar corretamente, pois não há uma diretiva ProxyPassReverseMatch
no apache.
A seguinte configuração funcionou para eu exigir autenticação para um único script CGI:
<Directory "/var/www/cgi-bin">
<Files "my-cgi-script">
# ...
# AuthName, AuthType, AuthUserFile, Require
# ...
</Files>
</Directory>
Tente aninhar o FilesMatch no Directory e usar caminhos relativos na diretiva FilesPath.
Tags authentication apache-2.2 http