Rocket-Nginx는 WordPress 캐시 플러그인 WP Rocket의 Nginx 구성입니다. 이를 통해 Nginx는 WordPress나 PHP를 호출하지 않고도 이전에 캐시된 파일을 직접 제공할 수 있습니다. 또한 웹 서버에 대한 요청을 줄여 브라우저의 캐시를 활용하기 위해 캐시 CSS, JS 및 미디어에 헤더를 추가합니다.
"이 구성은 얼마나 좋은가?"라고 자문해 볼 수도 있습니다.
WP Rocket이 웹사이트에서 이를 사용하여 더 빠르게 만든다고 가정해 보겠습니다.
이 프로젝트는 캐나다 몬트리올 근처에 위치한 WordPress 유지 관리 서비스인 SatelliteWP의 후원을 받습니다. 우리의 서비스는 영어와 프랑스어로 제공됩니다. SatelliteWP는 WordPress 사이트의 기업에 적합합니다.
구성은 Maxime Jobin(@maximejobin)에 의해 생성되었으며 현재 SatelliteWP에 의해 유지 관리됩니다.
구성의 목표는 WordPress에서 PHP를 실행할 필요 없이 캐시된 파일을 직접 제공하는 것이므로 이로 인해 예약된 작업이 호출되지 않을 수 있습니다. 이미 알고 계시겠지만 WP-Cron 작업은 실제 크론 작업이 아니며 사이트를 방문할 때만 실행됩니다.
예약된 작업이 필요할 때 실행되도록 하려면 WordPress 크론 작업을 비활성화하고 실제 크론 작업을 생성하는 것이 좋습니다.
WordPress 크론 작업을 비활성화하려면 wp-config.php
에 다음 줄을 추가하세요.
define( 'DISABLE_WP_CRON', true );
그런 다음 15분마다 수동으로 크론 작업을 수행합니다(대부분의 웹사이트에서는 충분합니다).
*/15 * * * * wget -q -O - http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
또는
*/15 * * * * curl http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
또는
*/15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null
이 변경 후에도 작업이 계속 실행되는지 테스트하세요!
스크립트를 사용하려면 실제 구성에 이를 포함해야 합니다. WordPress 웹 사이트가 Nginx와 함께 실행되도록 아직 구성되지 않은 경우 WordPress 설명서에 대한 Nginx 구성을 확인할 수 있습니다.
WP Rocket을 사용하는 모든 WordPress 웹 사이트에는 Rocket-Nginx 인스턴스가 하나만 필요합니다. 필요한 만큼 구성 파일을 생성할 수 있습니다.
Nginx 구성 디렉터리에 rocket-nginx
디렉터리를 만들 수 있습니다. Ubuntu를 사용하는 경우 Nginx 구성(nginx.conf)은 /etc/nginx/
에서 찾을 수 있습니다.
설치하려면 다음을 수행할 수 있습니다.
cd /etc/nginx
git clone https://github.com/satellitewp/rocket-nginx.git
버전 2.0부터는 구성을 생성해야 합니다. 기본 구성을 생성하려면 비활성화된 ini 파일의 이름을 바꾸고 구성 파서를 실행해야 합니다.
cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php
그러면 모든 웹사이트에 포함될 수 있는 default.conf
구성이 생성됩니다. 기본 구성을 변경해야 하는 경우 ini 파일을 편집하고 파일 하단에 다른 섹션을 추가할 수 있습니다.
그런 다음 Nginx 구성 파일에 생성된 구성을 포함해야 합니다. 웹사이트 구성이 /etc/nginx/sites-available
에 있는 경우 구성을 변경해야 합니다.
server {
...
# Rocket-Nginx configuration
include rocket-nginx/conf.d/default.conf;
...
}
구성을 다시 로드하기 전에 테스트하십시오: nginx -t
테스트가 완료되면 구성을 다시 로드해야 합니다. service nginx reload
그게 다야.
수행할 구성이 없습니다. 그것은 즉시 작동합니다. 하지만 몇 가지 사항을 편집할 수 있습니다.
rocket-nginx.ini
파일을 열고 그 안에 있는 모든 옵션을 확인하세요.
다음과 같이 기본 구성을 기반으로 새 섹션을 추가할 수 있습니다.
# This creates the new section and will generate a new configuration
[example.com : default]
# This will add a value to invalidate the cache with a cookie
cookie_invalidate[] = "my_custom_cookie"
ini 파일을 편집한 후에는 파서를 실행하여 Nginx 구성 파일을 다시 생성해야 합니다.
php rocket-parser.php
그러면 새로 추가되거나 수정된 섹션이 업데이트 구성 파일(*.conf)을 생성합니다.
마지막으로 구성 파일을 생성(또는 재생성) 할 때마다 다음을 수행해야 합니다.
오류가 발생하지 않았는지 테스트해 보세요.
nginx -t
구성을 다시 로드합니다.
service nginx reload
버전 3.0부터 conf.d
폴더가 생성됩니다. 생성한 각 프로필에 대해 해당 폴더 내에 하위 폴더가 생성됩니다. 여기에서 생성된 구성 파일에 포함될 파일을 생성할 수 있습니다.
다양한 시점에 구성 파일을 포함할 수 있습니다.
기본 프로필에서 start.*.conf
파일 이름 패턴을 사용하여 conf.d/default/
에 파일을 만듭니다.
기본 프로필에서 global.*.conf
파일 이름 패턴을 갖는 conf.d/default/
에 파일을 만듭니다.
기본 프로필에서 conf.d/default/
에 http.*.conf
파일 이름 패턴을 갖는 파일을 만듭니다.
기본 프로필에서 preprocess.*.conf
파일 이름 패턴을 갖는 conf.d/default/
에 파일을 만듭니다.
기본 프로필에서 css.*.conf
파일 이름 패턴을 갖는 conf.d/default/
에 파일을 만듭니다.
기본 프로필에서 js.*.conf
파일 이름 패턴을 갖는 conf.d/default/
에 파일을 만듭니다.
기본 프로필에서 conf.d/default/
에 media.*.conf
파일 이름 패턴을 갖는 파일을 생성합니다.
PHP를 호출하지 않고 Nginx에서 파일을 직접 제공하는지 확인하고 싶을 수도 있습니다. 그렇게 하려면 rocket-nginx.ini
파일을 열고 디버그 값을 다음과 같이 변경하십시오.
debug = false
에게:
debug = true
디버그가 true 또는 false로 설정되어 있는지 여부에 관계없이 다음 헤더가 존재합니다.
캐시된 파일을 제공하지 않는 이유:
Rocket-Nginx는 완벽합니까? 아니요, 그렇지 않습니다! 우리는 이를 최대한 완벽하게 만들려고 노력했지만 Nginx의 스크립팅 언어는 예를 들어 PHP와 같은 언어가 제공하는 모든 가능성을 제공하지는 않습니다. 따라서 몇 가지 제한 사항이 있습니다.
인코딩된 슬러그
짧은 대답: 인코딩된 슬러그는 Rocket-Nginx에서 제공할 수 없습니다.
Nginx의 스크립팅 제한으로 인해 'ججججاجة العسب'과 같은 슬러그가 인코딩되고 파일은 WP Rocket에 의해 '%d8%ac%d8%b2%d8%a7%d8%b2%d8%a9%20%d8%a7로 저장됩니다. %d9%84%d8%b9%d8%b4%d8%a8'(소문자). Google Chrome과 같은 일부 브라우저는 요청을 '%D8%AC%D8%B2%D8%A7%D8%B2%D8%A9%20%D8%A7%D9%84%D8%B9%D8%로 보냅니다. B4%D8%A8'(대문자). PHP와 같은 언어를 사용하면 이러한 문자열을 동일한 것으로 비교하는 것이 쉽습니다. Nginx에서는 타사 모듈(Perl 또는 Lua 등)이 필요하지 않는 한 이는 불가능합니다. Rocket-Nginx를 가능한 한 일반적으로 만들기 위해 모듈 종속성을 추가하지 않기로 결정했습니다. 인코딩된 슬러그를 지원하고 누락된 코드를 추가하려면 버전 3.1.0(및 이후)이 $rocket_uri_path
변수 대소문자를 수정하기 위해 "preprocess"라는 새 구성 포함을 제공한다는 점에 유의하세요.
WEBP 호환성
짧은 대답: WebP 호환성 기능을 활성화하면 Rocket-Nginx는 WP Rocket에서 생성된 WebP 캐싱 파일을 제공하지 않습니다.
WP Rocket은 이미지(JPG, PNG, ...)를 WebP로 변환하는 도구를 사용한 경우 특정 캐시를 생성할 수 있습니다. 불행하게도 Nginx의 스크립팅 언어는 유효성 검사를 올바르게 수행할 만큼 강력하지 않습니다. 따라서 이 기능을 활성화하면 Rocket-Nginx는 WP Rocket이 요청을 처리하고 컨텍스트에 따라 올바른 캐시된 페이지를 제공하도록 합니다.
Rocket-Nginx는 BF 캐시(뒤로/앞으로 캐시)와 호환됩니까?
예! 웹 사이트가 민감한 데이터를 표시하지 않고 뒤로/앞으로 캐싱과 잘 일치하는 경우 문제의 BF 캐시 토론에 따라 Rocket-Nginx 구성을 편집해야 합니다.
버전 1 또는 2에서 버전 3으로 어떻게 업그레이드하나요?
이전 구성을 저장하고 다시 시작하는 것이 좋습니다. 많은 것들이 바뀌었기 때문에 이 기회를 통해 모든 것을 검토해 보세요. 공식적으로 버전 3.x는 이전 버전과 호환되지 않습니다. 처음부터 시작하는 데는 15분 이상 걸리지 않습니다.
버전 3.x의 새로운 기능은 무엇입니까?
많은 것!
프로젝트에 대한 벤치마크가 있나요?
아니요. 사람들은 벤치마크를 싫어하는 만큼 좋아합니다. 모든 벤치마크에는 결과를 개선하기 위해 X, Y 또는 Z를 수행할 수 있었다고 주장하는 사람들이 있습니다. 이 프로젝트에서 벤치마크는 출력이 캐시에 있더라도 페이지에 영향을 미치는 플러그인 수에 따라 달라집니다(예: WP Rocket은 파일이 캐시에 있을 때에도 PHP를 실행합니다). 하지만 우리가 말할 수 있는 것은 NGINX → PHP-FPM → WordPress(PHP 및 데이터베이스) → 정적 파일 에서 NGINX → 정적 파일 로 이동한다는 것입니다. 즉, 정적 파일을 제공하기 전에 요청을 FPM으로 전달한 다음 PHP(적어도 WP Rocket의 경우...)로 전달하는 대신 NGINX에서 직접 정적 파일을 제공합니다.
내 웹사이트가 SSL 인증서(https)를 사용하는 경우 Rocket-Nginx가 작동합니까?
예! Rocket-Nginx는 요청이 HTTP 또는 HTTPS를 통해 이루어졌는지 감지하고 요청 유형에 따라 올바른 파일을 제공합니다. 두 프로토콜 모두 버전 1.0부터 자동으로 처리됩니다.
MIT 라이센스에 따라 출시되었습니다. 자세한 내용은 라이센스 파일을 참조하십시오.