Se alguém for cavado no buraco que eu fiz, aqui está como eu cavei:
location /hg {
fastcgi_pass unix:/var/run/hg-fastcgi.socket;
include fastcgi_params;
if ($request_uri ~ ^/hg([^?#]*)) {
set $rewritten_uri $1;
}
rewrite ^/hg$ /hg/ redirect;
fastcgi_param SCRIPT_NAME "/hg";
fastcgi_param PATH_INFO $rewritten_uri;
# for authentication
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_intercept_errors on;
error_page 401 = @hgauth;
}
location @hgauth {
fastcgi_pass unix:/var/run/hg-fastcgi.socket;
include fastcgi_params;
if ($request_uri ~ ^/hg([^?#]*)) {
set $rewritten_uri $1;
}
auth_basic "hg secured repos";
auth_basic_user_file /var/trac.htpasswd;
fastcgi_param SCRIPT_NAME "/hg";
fastcgi_param PATH_INFO $rewritten_uri;
# for authentication
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
}
A parte importante é fastcgi_intercept_errors on;
, error_page 401 = @hgauth;
e usando location @hgauth {
. Não tenho certeza se é possível fazer isso de outra maneira. Por favor, deixe-me saber se esta resposta ajudou!