phpmyadmin не работает для одного и того же req.http.host, другого req.url - PullRequest
0 голосов
/ 31 октября 2018

У меня разные бэкэнды для разных 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, но это не работает.

Пожалуйста, дайте мне знать, если мне нужно добавить что-то еще.

...