Docker 이미지의 가상 호스트 역할을 하도록 Squid를 구성하는 방법

Docker 이미지의 가상 호스트 역할을 하도록 Squid를 구성하는 방법

나는 다수의 도커 이미지(기본적으로 다수의 웹사이트를 호스팅하는)를 실행하는 서버를 가지고 있습니다.

그들은 모두 서버의 IP를 가리키는 다른 도메인 이름을 가지고 있습니다.

(서버 IP가 111.222.333.444라고 가정하겠습니다)

(제 도메인은 www.one.com, www.two.com, www. three.com입니다)

현재 docker 이미지는 모두 포트 80을 다른 포트의 서버로 내보냅니다.

  • www.one.com은 포트 5080입니다.
  • www.two.com은 포트 5180입니다.
  • www. three.com은 포트 5280입니다.

따라서 URL:port를 방문하면 웹사이트가 나타납니다.

하지만 가상 호스트를 사용하여 모든 URL에서 포트 80을 방문하고 관련 포트로 리디렉션하고 싶습니다.

나는 Apache로 이 작업을 수행하는 방법을 알고 있으며 아마도 nginx로 알아낼 수 있을 것입니다.

하지만 이것이 오징어의 진짜 용도라고 들었습니다. (가상 호스트로서의 아파치는 매우 무거워 보입니다.)

ubuntu12.04 서버에 squid3을 설치했습니다.

그리고 이것은 지금까지 내 squid.conf입니다

http_port 80 accel defaultsite=www.one.com no-vhost
cache_peer 127.0.0.1 parent 5080 0 no-query originserver name=YourAccelNameHere
acl your_site_acl dstdomain www.one.com
http_access allow your_site_acl
cache_peer_access YourAccelNameHere allow your_site_acl
cache_peer_access YourAccelNameHere deny all

www.one.com을 localhost의 포트 5080으로 "전달해야 하는" 튜토리얼 읽기(그러나 그렇지 않음)

나는 오징어에 대해 전혀 모르고 인터넷 검색을 통해 내가 원하는 것을 수행하는 간단한 튜토리얼을 찾을 수 없는 것 같습니다.

누구든지 나에게 좋은 튜토리얼을 알려주거나 내가 원하는 것을 수행할 squid.conf를 더 잘 제공할 수 있습니까?

감사해요

답변1

직접 답했어요

내 솔루션은 다음과 같습니다

바니쉬로 해결했어요

apt-get install varnish

그런 다음 내

/etc/default/varnish

에게

START=yes
NFILES=131072
MEMLOCK=82000
DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

그런 다음 내 설정

/etc/varnish/default.vcl

에게

backend default {
    .host = "127.0.0.1";
    .port = "80";
}

backend one_website {
    .host = "127.0.0.1";
    .port = "5080";
}

backend two_website {
    .host = "127.0.0.1";
    .port = "5180";
}

## Multiple virtual host
sub vcl_recv {
 if (req.http.host ~ "^www.default.com(:[0-9]+)?$") {
    set req.backend = default;
 } else if (req.http.host ~ "^www.one.com(:[0-9]+)?$") {
    set req.backend = one_website;
 } else if (req.http.host ~ "^www.two.com(:[0-9]+)?$") {
    set req.backend = two_website;
 }
}

## Fetch
sub vcl_fetch {
        ## Remove the X-Forwarded-For header if it exists.
        remove req.http.X-Forwarded-For;

        ## insert the client IP address as X-Forwarded-For. This is the normal IP address of the user.
        set    req.http.X-Forwarded-For = req.http.rlnclientipaddr;
        ## Added security, the "w00tw00t" attacks are pretty annoying so lets block it before it reaches our webserver
        if (req.url ~ "^/w00tw00t") {
                error 403 "Not permitted";
        }
                ## Deliver the content
        return(deliver);
}

## Deliver
sub vcl_deliver {
        ## We'll be hiding some headers added by Varnish. We want to make sure people are not seeing we're using Varnish.
        ## Since we're not caching (yet), why bother telling people we use it?
        remove resp.http.X-Varnish;
        remove resp.http.Via;
        remove resp.http.Age;

        ## We'd like to hide the X-Powered-By headers. Nobody has to know we can run PHP and have version xyz of it.
        remove resp.http.X-Powered-By;
}

이 문제에 직면한 다른 사람에게 도움이 되기를 바랍니다.

관련 정보