[온-프레미스]{class="badge informative" title="Adobe Commerce 온-프레미스 프로젝트에만 적용됩니다."}

바니시 캐싱에 대한 nginx 구성 configure-web-server-for-varnish-caching

Varnish가 Adobe Commerce 앞의 전체 페이지 캐시로 사용되는 경우 Varnish는 일반적으로 공개 HTTP 포트에서 수신하고 8080과 같이 기본이 아닌 백엔드 포트의 nginx에 요청을 전달합니다. Commerce 오리진 서버에 대한 nginx 사이트 구성을 업데이트하여 Varnish가 사용할 백엔드 포트에서 수신합니다.

NOTE
Commerce 프로젝트가 클라우드에 배포된 경우 전체 페이지 캐싱은 바니시 대신 Fastly를 사용합니다. 이 섹션의 항목은 온-프레미스 설치에만 적용됩니다.

다음 섹션에서는 포트 8080을 예로 사용합니다.

Commerce 원본 서버의 nginx 수신 포트를 변경합니다:

  1. 텍스트 편집기에서 Adobe Commerce 원본 서버에 대한 nginx 사이트 구성을 엽니다.

위치는 운영 체제와 nginx 레이아웃에 따라 다릅니다. 예를 들어 Ubuntu는 /etc/nginx/sites-available/ 아래의 파일을 사용하는 경우가 많습니다.

  1. Commerce 사이트의 server 블록에서 공용 HTTP 포트에서 listen 지시문을 Varnish가 nginx에 연결하는 데 사용할 백엔드 포트로 변경합니다.

    예: 변경

    code language-conf
    server {
        listen 80;
        server_name example.com;
        root /var/www/html/magento2;
        include /var/www/html/magento2/nginx.conf.sample;
    }
    

    끝:

    code language-conf
    server {
        listen 8080;
        server_name example.com;
        root /var/www/html/magento2;
        include /var/www/html/magento2/nginx.conf.sample;
    }
    
  2. 파일을 저장합니다.

  3. nginx 구성을 확인합니다.

    code language-shell
    nginx -t
    
  4. nginx 다시 시작:

    code language-shell
    systemctl restart nginx
    

바니시 시스템 구성 수정

백엔드 포트에서 수신하도록 nginx를 업데이트한 후 요청을 해당 호스트 및 포트로 전달하도록 Varnish를 구성합니다. For example:

backend default {
    .host = "192.0.2.55";
    .port = "8080";
}

기본 VCL 수정

이 섹션에서는 Varnish가 HTTP 응답 헤더를 반환하도록 최소 구성을 제공하는 방법에 대해 설명합니다. 이를 통해 Vannish를 사용하도록 Commerce 응용 프로그램을 구성하기 전에 Vannish가 작동하는지 확인할 수 있습니다.

바니시를 최소한으로 구성하려면

  1. default.vcl 백업:

    code language-shell
    cp /etc/varnish/default.vcl /etc/varnish/default.vcl.bak
    
  2. 텍스트 편집기에서 /etc/varnish/default.vcl 열기

  3. 다음 별표를 찾습니다.

    code language-conf
    backend default {
        .host = "127.0.0.1";
        .port = "80";
    }
    
  4. .host의 값을 Varnish 백엔드 또는 원본 서버​의 정규화된 호스트 이름 또는 IP 주소 및 수신 대기 포트로 바꾸십시오. 즉, Varnish 콘텐츠를 제공하는 서버는 속도가 빨라집니다.

    일반적으로 웹 서버입니다. 바니시 가이드​에서 백엔드 서버를 참조하십시오.

  5. .port의 값을 웹 서버의 수신 포트(이 예제에서는 8080)로 바꿉니다.

    예: nginx가 192.0.2.55 호스트에 설치되어 있고 포트 8080에서 수신 대기 중:

    code language-conf
    backend default {
        .host = "192.0.2.55";
        .port = "8080";
    }
    
    note info
    INFO
    Varnish와 nginx가 동일한 호스트에서 실행 중인 경우 Adobe은 localhost이(가) 아닌 IP 주소 또는 호스트 이름을 사용할 것을 권장합니다.
  6. 변경 내용을 default.vcl에 저장하고 텍스트 편집기를 종료합니다.

  7. 니시 다시 시작:

    code language-shell
    service varnish restart
    

Vannish를 시작하지 못하면 다음과 같이 명령줄에서 실행해 보십시오.

varnishd -d -f /etc/varnish/default.vcl

오류 메시지가 표시됩니다.

INFO
Vannish가 서비스로 시작되지 않는 경우 SELinux 규칙을 구성하여 실행할 수 있도록 해야 합니다.

바니시가 작동하는지 확인

다음 단원에서는 Vannish가 작동하지만 이를 사용하도록 Commerce을 구성하지 않고 확인하는 방법에 대해 설명합니다. Commerce을 구성하기 전에 이 작업을 시도해야 합니다.

다음 섹션에서 설명한 작업을 표시된 순서대로 수행합니다.

니스 시작

입력: service varnish start

Vannish가 서비스로 시작되지 않으면 다음과 같이 명령줄에서 시작합니다.

  1. Vannish CLI를 시작합니다.

    code language-shell
    varnishd -d -f /etc/varnish/default.vcl
    
  2. Vanish 하위 프로세스를 시작합니다.

    메시지가 표시되면 start을(를) 입력하십시오.

    성공적인 시작을 확인하기 위해 다음 메시지가 표시됩니다.

    code language-text
    child (29805) Started
    200 0
    
    Child (29805) said
    Child (29805) said Child starts
    

netstat

Varnish 서버에 로그인하고 다음 명령을 입력합니다.

netstat -tulpn

특히 다음 출력을 찾습니다.

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      32614/varnishd
tcp        0      0 127.0.0.1:58484             0.0.0.0:*                   LISTEN      32604/varnishd
tcp        0      0 :::8080                     :::*                        LISTEN      26822/nginx
tcp        0      0 ::1:48509                   :::*                        LISTEN      32604/varnishd

위의 예는 80번 포트에서 실행되는 Varnish와 8080번 포트에서 실행되는 nginx를 보여줍니다.

varnishd에 대한 출력이 표시되지 않으면 Vannish가 실행 중인지 확인하십시오.

netstat개 옵션을 참조하세요.

Commerce 소프트웨어 설치

아직 설치하지 않았다면 Commerce 소프트웨어를 설치합니다. 기본 URL을 입력하라는 메시지가 표시되면 Varnish는 모든 수신 HTTP 요청을 수신하므로 Varnish 호스트와 포트 80(Varnish용)을 사용합니다.

Commerce 설치 시 발생할 수 있는 오류:

Error 503 Service Unavailable
Service Unavailable
XID: 303394517
Varnish cache server

이 오류가 발생하는 경우 default.vcl을(를) 편집하고 다음과 같이 backend 스타자에 시간 제한을 추가하십시오.

backend default {
   .host = "127.0.0.1";
   .port = "8080";
   .first_byte_timeout = 600s;
}

HTTP 응답 헤더 확인

이제 모든 페이지에서 반환된 HTML 응답 헤더를 확인하여 Varnish가 페이지를 제공하는지 확인할 수 있습니다.

헤더를 보려면 먼저 Commerce을 개발자 모드로 설정해야 합니다. 몇 가지 방법이 있습니다. 그 중 가장 간단한 방법은 Commerce 응용 프로그램 루트에서 .htaccess을(를) 수정하는 것입니다. magento deploy:mode:set 명령을 사용할 수도 있습니다.

개발자 모드용 Commerce 설정

Commerce을 개발자 모드로 설정하려면 magento deploy:mode:set 명령을 사용합니다.

Varnish 로그 보기

Varnish가 실행 중인지 확인한 다음 Varnish 서버에 다음 명령을 입력합니다.

varnishlog

웹 브라우저에서 임의의 Commerce 페이지로 이동합니다.

명령 프롬프트 창에 긴 응답 헤더 목록이 표시됩니다. 다음과 같은 헤더를 찾습니다.

-   BereqHeader    X-Varnish: 3
-   VCL_call       BACKEND_FETCH
-   VCL_return     fetch
-   BackendOpen    17 default(10.249.151.10,,8080) 10.249.151.10 60914
-   Backend        17 default(10.249.151.10,,8080)
-   Timestamp      Bereq: 1440449534.261791 0.000618 0.000618
-   ReqHeader      Host: 10.249.151.10
-   ReqHeader      Connection: keep-alive
-   ReqHeader      Content-Length: 86
-   ReqHeader      Cache-Control: max-age=0
-   ReqHeader      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
-   ReqHeader      Origin: http://10.249.151.10

이러한 헤더가 표시되지 않음​인 경우 바니시를 중지하고 default.vcl을(를) 확인한 다음 다시 시도하십시오.

HTML 응답 헤더 확인

응답 헤더를 확인하는 방법에는 브라우저 플러그인 또는 브라우저 관리자 사용을 비롯한 여러 가지가 있습니다.

다음 예제에서는 curl을(를) 사용합니다. HTTP를 사용하여 Commerce 서버에 액세스할 수 있는 모든 컴퓨터에서 이 명령을 입력할 수 있습니다.

curl -I -v --location-trusted '<your Commerce base URL>'

For example,

curl -I -v --location-trusted 'http://192.0.2.55/magento2'

다음과 같은 헤더를 찾습니다.

Content-Type: text/html; charset=iso-8859-1
X-Varnish: 15
Age: 0
Via: 1.1 varnish-v6
X-Magento-Cache-Debug: HIT
recommendation-more-help
commerce-operations-help-configuration