Привычка Nginx отправляет POST в бэкенд FastCGI, но ДОБИРАЕТСЯ, хорошо работает?

Купите свои ноутбуки и машины от кого-то как Dell, и возможности - Вы, может выполнить стандартную сборку, улучшая поддержку, безопасность и время простоя, как будто что-то идет не так, как надо мудрое программным обеспечением, можно восстановить машину приблизительно через один час, не день.

1
задан 23 December 2011 в 18:50
2 ответа

Если кто-либо вырыт в дыру, я сделал, вот то, как я откопал:

    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;
    }

Важная часть fastcgi_intercept_errors on;, error_page 401 = @hgauth;, и использование location @hgauth {. Я не уверен, что возможно сделать этот любой другой путь. Сообщите мне, помог ли этот ответ!

1
ответ дан 3 December 2019 в 18:11

Это было ошибкой в nginx, который был зафиксирован в 0.8.48.

BTW, необходимо использовать fastcgi_split_path_info как if не становится инициированным правильно с limit_except.

Таким образом в конце что-то как этот должно работать на Вас:

location /hg {
    fastcgi_pass unix:/var/run/hg-fastcgi.socket;
    include fastcgi_params;

    limit_except GET HEAD {
        auth_basic "hg secured repos";
        auth_basic_user_file /var/trac.htpasswd;
    }

    fastcgi_split_path_info ^(/hg)(.*)$;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;

    # for authentication
    fastcgi_param AUTH_USER $remote_user;
    fastcgi_param REMOTE_USER $remote_user;
}
3
ответ дан 3 December 2019 в 18:11

Теги

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