У меня непонятная проблема. Я давно установил 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 по умолчанию. Мне нужно немного поработать, но, наконец, это сработает.