5 IPのcPanelサーバーでニスを塗る


-1

同じドメインの3つのサブドメインをホストするサーバーがあり、それぞれに独自のIPがあります。たくさんの小さな画像とワニスが奇跡を起こすという理由で、Apacheの前にワニスをセットアップする必要があります。

サーバーにはまだ名前が付けられていないため(DNSは古いサーバーを指す)、IPとの比較を行います(これがゴミになる理由かどうかはわかりません)。

私はcPanelからポート0.0.0.0:81にApacheを設定し、次のようにdefault.vclにバックエンドを作成しました。

backend name1 {
        .host = "x1.y2.z3.w4";
        .port = "81";
}

backend name2 {
        .host = "x5.y6.z7.w8";
        .port = "81";
}

など、すべてのサブドメインについて

すべての例は言っています:
put

if (req.http.host ~ "x1.y2.z3.w4") {
        set req.backend = name1;
} else {
        set req.backend = name2;
}

次のような新しいvcl_recvサブルーチン定義に追加します。

sub vcl_recv {
 if (req.http.host ~ "x1.y2.z3.w4") {
            set req.backend = name1;
    } else {
            set req.backend = name2;
    }
return(lookup);
}

その結果、x5.y6.z7.w8 IP(上記のルールの例外)を具体的に配置した場合にのみ何かを取得し、他のすべてがエラーでデフォルトのWebサイトcpanelページにリダイレクトされ、何も見つかりません。

sysconfig / varnishファイルのデーモンオプション定義は次のとおりです。

DAEMON_OPTS="-a 0.0.0.0:80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -u varnish -g varnish \
             -s malloc,7G \
             -p thread_pool_add_delay=1 \
             -p thread_pools=4 \
             -p thread_pool_min=200 \
             -p thread_pool_max=4000 \
             -p session_linger=50 \
"

言うまでもなく、Apacheのポート81からアクセスすると両方のIPが機能します。

何がうまくいかないのか?私はワニスVCLの合計n00bであり、ヘルプやポインターは大歓迎です!

ありがとう


名前付きホストを使用せずにワニスがこれを正しく行うかどうかはわかりません。
コアダンプ

回答:


1

それを見つけた!

backend domain1 {
        .host = "x1.y1.z1.w1";
        .port = "81";
}

backend domain2 {
        .host = "x2.y2.z2.w2";
        .port = "81";
}

オーバーライドします sub vcl_recv {

で:

sub vcl_recv {
        if ((server.ip == "x1.y1.z1.w1")) {
                set req.backend = domain1;
        } else if((server.ip == "x2.y2.z2.w2") || (req.http.host ~ "domain2.site.com")) {
                set req.backend = domain2;
        } else {
                set req.backend = domain3;
        }
        if (req.request == "GET" && req.url ~ "\.(css|gif|jpg|jpeg|bmp|png|ico|img|tga|wmf)$") {
                remove req.http.cookie;
                return(lookup);
        }
}

比較に必要なのはserver.ip変数でした

PHPの前にプロキシサーバーがあることを念頭に置いてください(私は支払いませんでした)$_SERVER['REMOTE_ADDR']。無効になりました。プロキシのアドレスを返します(したがって、サイトアドレス)。_SERVER["HTTP_X_FORWARDED_FOR"]代わりにを使用するか、すべてを確認するための確実な機能を作成する必要があります。

function getIP()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.