У меня разные бэкэнды для разных req.url
, но одинаковых http.host
.
Так, например: example.com/one переходит к одному бэкэнду, example.com/two, к другому. Сами сайты работают нормально. У меня проблема в том, что когда я пишу example.com/one/_pa_ad (это псевдоним phpmyadmin), страница отображается, но я не могу войти в базу данных. Прямо на бэкэнде все работает просто отлично.
Соответствующие части default.vcl:
backend web230 {
.host = "10.10.10.230";
.port = "80";
.first_byte_timeout = 60s;
.connect_timeout = 300s; }
backend web235 {
.host = "10.10.10.235";
.port = "80";
.first_byte_timeout = 60s;
.connect_timeout = 300s; }
backend web237 {
.host = "10.10.10.237";
.port = "80";
.first_byte_timeout = 60s;
.connect_timeout = 300s;
# ADD TRAILING SLASH
if ((req.url ~ "/carrot$") && (!(req.url ~ "index.php"))) {
set req.url = req.url + "/";
}
if ((req.url ~ "/speaker$") && (!(req.url ~ "index.php"))) {
set req.url = req.url + "/";
}
if ((req.url ~ "/random$") && (!(req.url ~ "index.php"))) {
set req.url = req.url + "/";
}
#REDIRECT TO HTTPS AND INSERT www leaf
if (std.port(local.ip) == 80 && req.http.host ~ "(www\.)?auto-bild.ro(:[0-9]+)?$") {
set req.http.x-redir = "https://" + req.http.host + req.url;
return(synth(850, "Moved permanently"));
}
if (std.port(local.ip) == 80 && req.http.host ~ "(www\.)?example.com(:[0-9]+)?$") {
set req.http.x-redir = "https://" + req.http.host + req.url;
return(synth(850, "Moved permanently"));
}
if (std.port(local.ip) == 80 && req.http.host ~ "(www\.)?yetanother.com(:[0-9]+)?$") {
set req.http.x-redir = "https://" + req.http.host + req.url;
return(synth(850, "Moved permanently"));
}
if (std.port(local.ip) == 80 && req.http.host ~ "(www\.)?someother.com(:[0-9]+)?$") {
set req.http.x-redir = "https://" + req.http.host + req.url;
return(synth(850, "Moved permanently"));
}
if (std.port(local.ip) == 80 && req.http.host ~ "(www\.)?thirddomain.com") {
set req.http.x-redir = "https://" + req.http.host + req.url;
return(synth(850, "Moved permanently"));
}
if (req.method == "PUT") {
set req.http.x-method = req.method;
return (pass);
}
if (req.method == "PATCH") {
set req.http.x-method = req.method;
return (pass);
}
else if (req.http.host ~ "(www\.)?example.com" && req.url ~ "^/speaker/_pa_ad/?") {
set req.backend_hint = web235;
return (pass);
}
else if (req.http.host ~ "(www\.)?example.com" && req.url ~ "^/speaker/") {
set req.backend_hint = web235;
}
else if (req.http.host ~ "(www\.)?example.com" && req.url ~ "^/carrot/_pa_ad/?") {
set req.backend_hint = web237;
return (pass);
}
else if (req.http.host ~ "(www\.)?example.com" && req.url ~ "^/carrot/") {
set req.backend_hint = web237;
}
else if (req.http.host ~ "(www\.)?example.com" && req.url ~ "^/random/") {
set req.backend_hint = web44;
} else if (req.http.host ~ "(www\.)?example.com" && req.url ~ "^/_pa_ad/?") {
set req.backend_hint = web230;
return (pass);
} else if (req.http.host ~ "(www\.)?example.com(:[0-9]+)?$") {
set req.backend_hint = web230;
Так что для www.example.com/carrot/_pa_ad это не работает. Может быть, я размещаю предложения в неправильном порядке?
Я не уверен, что такое обычная установка в таком случае. Я не видел ничего похожего в интернете, только используя разные бэкэнды для разных req.url, но не для phpmyadmin. В /etc/phpmyadmin/apache.conf у меня есть Alias / carrot / _pa_ad / usr / share / phpmyadmin, а в config.inc.php у меня есть следующая строка:
$cfg['PmaAbsoluteUri'] = $_SERVER["REQUEST_SCHEME"] . '://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['PHP_SELF']);
Я также просто попытался написать https://example.com/carrot/_pa_ad вместо всех этих переменных php, но это не работает.
Пожалуйста, дайте мне знать, если мне нужно добавить что-то еще.