У меня есть сервер (debian jessie), управляющий несколькими доменами с помощью varnish и apache, и я хочу использовать pound для перенаправления HTTP-трафика на https.
Поскольку директива HeadRequire разрешает регулярное выражение, я также пытаюсь использовать регулярное выражение в Redirect:
ListenHTTP
Address 1.2.3.4
Port 80
## allow PUT and DELETE also (by default only GET, POST and HEAD)
xHTTP 0
RewriteLocation 0
Service "myHost"
HeadRequire "^Host: (.+)\.myserver\.net"
Redirect 301 "http://\1.myserver.net"
End
End
но, к сожалению, я получаю ERR_INVALID_REDIRECT
Есть ли способ разрешить фунту выполнять перенаправление с подстановочными знаками?
Выход Curl:
$ curl -v http://prova.myserver.net:80/
* Hostname was NOT found in DNS cache
* Trying 1.2.3.4...
* Connected to prova.myserver.net (1.2.3.4) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.38.0
> Host: prova.myserver.net:80
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 301 Moved Permanently
< Location: http://%5c1.myserver.net/
< Content-Type: text/html
< Content-Length: 148
<
* Closing connection 0
<html><head><title>Redirect</title></head><body><h1>Redirect</h1><p>You should go to <a href="http://%5c1.myserver.net/">here</a></p></body></html>
Вкратце: невозможно.
На основе фунт документация директива Redirect не допускает никаких шаблонов (или регулярных выражений). И это также логически следует из того факта, что может быть много директив HeadRequire для каждой службы (все они должны быть удовлетворены для работы Redirect), поэтому, если вы использовали две директивы HeadRequire с разными регулярными выражениями, Redirect не сможет угадать, какой из них имеет нужную обратную ссылку.
Вы также спрашивали о перенаправлении на https, но ваш пример перенаправляет на http. Вероятно, вы пропустили "s", например:
ListenHTTP
Address 1.2.3.4
Port 80
Service
HeadRequire "Host:.*some1.myserver.net.*"
Redirect "https://some1.myserver.net"
End
Service
HeadRequire "Host:.*some2.myserver.net.*"
Redirect "https://some2.myserver.net"
End
End
ListenHTTPS
Address 1.2.3.4
Port 443
# first domain
Cert "/etc/pki/tls/letsencrypt_pound/pound_some1.pem"
# second domain
Cert "/etc/pki/tls/letsencrypt_pound/pound_some2.pem"
Disable SSLv3
End