502 Недопустимых шлюза с nginx + апач + подверсия + ssl (КОПИЯ SVN)

У меня есть проблема рабочий Apache + Подверсия с SSL позади прокси Nginx, и я надеюсь, что у кого-то мог бы быть ответ. Я обыскивал Google в течение многих часов, ища решение моей проблемы и, может казаться, не понимаю это. Что я вижу, "502 (Недопустимый шлюз)" ошибки при попытке ПЕРЕМЕСТИТЬ или СКОПИРОВАТЬ подверсию использования; однако, контроль и фиксации хорошо работают. Вот соответствующие части (я думаю) nginx и апачских рассматриваемых файлов конфигурации:

Nginx

upstream subversion_hosts {
    server 127.0.0.1:80;
}


server {
        listen       x.x.x.x:80;
        server_name  hostname;

        access_log   /srv/log/nginx/http.access_log main;
        error_log    /srv/log/nginx/http.error_log info;

        # redirect all requests to https
        rewrite ^/(.*)$ https://hostname/$1 redirect;
}

# HTTPS server
server {
        listen       x.x.x.x:443;
        server_name  hostname;

        passenger_enabled    on;
        root /path/to/rails/root;

        access_log   /srv/log/nginx/ssl.access_log main;
        error_log    /srv/log/nginx/ssl.error_log info;

        ssl                  on;
        ssl_certificate      server.crt;
        ssl_certificate_key  server.key;

        add_header Front-End-Https on;

        location /svn {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                set $fixed_destination $http_destination;
                if ( $http_destination ~* ^https(.*)$ )
                {
                    set $fixed_destination http$1;
                }
                proxy_set_header Destination $fixed_destination;

                proxy_pass http://subversion_hosts;
        }
}

Apache

Listen 127.0.0.1:80
<VirtualHost *:80>
        # in order to support COPY and MOVE, etc -  over https (443),
        # ServerName _must_ be the same as the nginx servername
        # http://trac.edgewall.org/wiki/TracNginxRecipe
        ServerName hostname
        UseCanonicalName on

        <Location /svn>
                DAV svn
                SVNParentPath "/srv/svn"
                Order deny,allow
                Deny from all
                Satisfy any
                # Some config omitted ...
        </Location>

        ErrorLog /var/log/apache2/subversion_error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/subversion_access.log combined
</VirtualHost>

Из того, что я мог сказать при исследовании этой проблемы, имя сервера должно соответствовать на обоих апачскому серверу, а также nginx серверу, который я сделал. Кроме того, эта проблема, кажется, слоняется поблизости, даже если я изменяю конфигурацию для использования http только.

7
задан Steve Platz 19 March 2010 в 17:33
поделиться

2 ответа

Я выяснил, что причиной моей проблемы был не прокси между nginx и apache, а скорее проблема с самим Apache.

Что я не упомянул в первоначальном вопросе, так это то, что было в блоке # Some config omitted. Этот блок содержал следующее:

AuthType Basic
AuthName "Redmine SVN Repository"
Require valid-user
PerlAccessHandler Apache::Authn::Redmine::access_handler
PerlAuthenHandler Apache::Authn::Redmine::authen_handler

Для субверсии я контролирую доступ пользователей, используя обработчик аутентификации Redmine. После включения и выключения опций и сужения проблемы я узнал, что их модуль аутентификации не является потокобезопасным. Я столкнулся с этой ошибкой, потому что Apache использовал Worker MPM. Переключение на Prefork MPM (sudo aptitude install apache2-mpm-prefork в Ubuntu) решило проблему.

1
ответ дан 6 December 2019 в 12:48
поделиться

Сегодня я столкнулся именно с этой проблемой.

Добавление следующего в конфигурацию apache2 исправило это:

RequestHeader edit Destination ^ https http early

Ура,
Ignace M


Источник:

8
ответ дан 6 December 2019 в 12:48
поделиться
Другие вопросы по тегам:

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