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

Lighttpd Proxy -> Apache SVN mod_dav_svn - зависает через командную строку, но работает в браузере

У меня непонятная проблема. Я давно установил Apache 2.4 с mod_dav_svn, чтобы иметь доступ к своим репозиториям через https-адреса. Все отлично работает только с Apache. Теперь я переключился на lighttpd и теперь управляю доступом через https с помощью proxy.server в моей конфигурации lighttp. Это нормально работает в браузере, я все еще могу получить доступ к своим репозиториям через браузер прямо сейчас. Но теперь он больше не работает с командной строкой или черепаховым svn. Висит бесконечно. В журнале нет ошибки или еще чего, просто зависает без ошибок. Когда я отменяю запрос в командной строке, чем он говорит unable to connect... но когда я ввожу тот же URL-адрес в браузере, он отлично работает. Я понятия не имею, как это исправить.

Изменить: если я отключу SSL на стороне lighttpd и передаю его через порт 80, он также не сработает. Он запрашивает имя пользователя и проходит, после чего зависает.

Вот мой конфиг lighttpd

$SERVER["socket"] == ":443" {
    ssl.engine = "enable",
    server.errorlog = "/var/log/lighttpd/ssl-error.log",
    ssl.pemfile = "/etc/ssl/owncerts/defaultcert.pem",

    HTTP["host"] == "myhost.com"{
        server.document-root = "/srv/default/htdocs",
        ssl.pemfile = "/etc/ssl/owncerts/myhost.com.pem",
        proxy.server = (
            "" => (("host" => "127.0.0.1", "port" => 8443))
        )
    }
}

А вот и мой конфиг apache

<VirtualHost *:8443>
    ServerName https://myhost.com
    <Location />
        DAV svn
        SVNPath /srv/svn/xxx
        AuthType Basic
        AuthName "xxx SVN Repository"
        AuthUserFile /srv/svn/xxx/conf/users
        AuthzSVNAccessFile /srv/svn/xx/conf/authz
        Require valid-user
    </Location>
</VirtualHost>

ТЕСТ 1

Когда я выполняю проверку запроса OPTIONS через curl чем я даю мне правильный вывод вроде этого - И в журнале доступа Apache, и в Lighttp есть коды ответа с "200".

HTTP/1.1 200 OK
Date: Mon, 09 Mar 2015 13:07:27 GMT
Server: Apache/2.4.7 (Ubuntu)
DAV: 1,2
DAV: version-control,checkout,working-resource
DAV: merge,baseline,activity,version-controlled-collection
DAV: http://subversion.tigris.org/xmlns/dav/svn/depth
DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops
DAV: http://subversion.tigris.org/xmlns/dav/svn/atomic-revprops
DAV: http://subversion.tigris.org/xmlns/dav/svn/partial-replay
DAV: http://subversion.tigris.org/xmlns/dav/svn/inherited-props
DAV: http://subversion.tigris.org/xmlns/dav/svn/inline-props
DAV: http://subversion.tigris.org/xmlns/dav/svn/reverse-file-revs
DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo
MS-Author-Via: DAV
Allow: OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNLOCK,CHECKOUT
Content-Length: 0

ТЕСТ 2

Если я сделаю простой запрос "checkout" через командную строку svn, произойдет следующее:

Это запросы на стороне lighttpd

xxx.xxx.xx.xxx myhost.com - [09/Mar/2015:14:13:19 +0100] "OPTIONS /testrepos HTTP/1.1" 401 588 "-" "SVN/1.8.11 (x64-microsoft-windows) serf/1.3.8"

Этот запрос находится на стороне apache

myhost.com:443 127.0.0.1 - - [09/Mar/2015:14:13:19 +0100] "OPTIONS /testrepos HTTP/1.0" 401 825 "-" "SVN/1.8.11 (x64-microsoft-windows) serf/1.3.8"
myhost.com:443 127.0.0.1 - brain [09/Mar/2015:14:13:19 +0100] "OPTIONS /testrepos HTTP/1.0" 200 1661 "-" "SVN/1.8.11 (x64-microsoft-windows) serf/1.3.8"

На этом этапе клиент командной строки svn зависает.

ТЕСТ 3

Если я сделаю простой запрос OPTIONS с CURL в существующих репозиториях (testrepos), он будет работать, как ожидалось

Вот журнал lighttpd

xxx.xxx.xx.xxx myhost.com - [09/Mar/2015:14:30:41 +0100] "OPTIONS /testrepos HTTP/1.1" 200 0 "-" "curl/7.35.0"

Вот журнал apache

myhost.com:443 127.0.0.1 - brain [09/Mar/2015:14:30:41 +0100] "OPTIONS /testrepos HTTP/1.0" 200 855 "-" "curl/7.35.0"

ТЕСТ 4

К сожалению, я не могу отладить сетевое соединение моего svn-клиента, такой опции больше нет в 1.8. Кроме того, я протестировал его без базовой аутентификации. Также не работает, и Apache, и Lighttpd возвращают 200 кодов ответа, но клиент SVN CLI все еще зависает. Когда я пытаюсь проверить URL-адрес прямо на стороне apache с помощью http://myhost:8443/testrepos он также работает с клиентом CLI. Похоже, прокси-канал между Apache и Lighttp сломан. Я, вероятно, решу пропустить мой поиск ошибок и переключить свои репозитории только на новый порт вместо порта ssl по умолчанию. Мне нужно немного поработать, но, наконец, это сработает.