Temel bilgiler #
Varnish Cache , sıkıştırılmış Sayfa Kaynağını bellekte depolayarak sitelerinizi hızlandıran önbelleğe alınan bir HTTP ters proxy'sidir . CSS, JS ve Görüntüler gibi
statik dosyalar , NGINX bunları daha hızlı sağladığı için Vernik Önbelleğinde DEPOLANMAZ .
Sitenizi açtığınızda, örneğin www. domain .com, istek , SSL/TLS'nin sonlandırıldığı NGINX'e gider . İstek, Stil Sayfası, Javascript veya Görüntü gibi statik bir dosyaysa , NGINX tarafından hemen teslim edilir . Diğer tüm istekler Varnish Cache'ye (Port 6081 ) iletilir.
Varnish Cache'nin bir istek için bir önbellek girişi varsa , sayfa kaynağı PHP-FPM tarafından işlenmeden hemen bellekten döndürülür .
Önbellek girişi yoksa, istek Varnish Cache tarafından NGINX 8080 numaralı bağlantı noktasına iletilir ve burada PHP Uygulaması tarafından PHP-FPM aracılığıyla işlenir .
Vhost Açıklama #
Aşağıdaki Vhost , WordPress/WooCommerce için kullanılıyor .
1-10 . satırda domain.com için bir yönlendirme gerçekleşir. http ve https'den gelen tüm istekler 301 üzerinden https : //www.domain.com'a yönlendirilir .
CSS, JS ve Images gibi statik dosyalar 97-101 satırında teslim edilir .
Diğer tüm istekler / , satır 79-95 üzerinden gidiyor .
80. satırda {{varnish_proxy_pass}} yer tutucusunu görürsünüz .
Vernik Önbelleği devre dışı bırakıldığında , bu yer tutucu için oluşturulan değer:
proxy_pass http://127.0.0.1:8080;
kopyala
Varnish Cache etkinleştirildiğinde , Varnish Cache Settings'deki Varnish Server değerini kullanır , örn.
proxy_pass http://127.0.0.1:6081;
kopyala
63-67 satırları WordPress/WooCommerce için özeldir .
/wp-admin/ ve wp-login.php'ye yapılan tüm istekler atlanır , yani bunlar Varnish Cache'den GEÇMEMEKTEDİR ; 8080 numaralı bağlantı noktasına iletilirler (bkz. satır 12-37 ), burada PHP Uygulaması tarafından PHP-FPM aracılığıyla işlenirler .
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
{{ssl_certificate_key}}
{{ssl_certificate}}
server_name domain.com;
return 301 https://www.domain.com$request_uri;
}
server {
listen 8080;
listen [::]:8080;
server_name www.domain.com;
{{root}}
try_files $uri $uri/ /index.php?$args;
index index.php index.html;
location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
try_files $uri =404;
fastcgi_read_timeout 3600;
fastcgi_send_timeout 3600;
fastcgi_param HTTPS "on";
fastcgi_pass 127.0.0.1:{{php_fpm_port}};
fastcgi_param PHP_VALUE "{{php_settings}}";
}
if (-f $request_filename) {
break;
}
}
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
{{ssl_certificate_key}}
{{ssl_certificate}}
server_name www.domain.com;
{{root}}
{{nginx_access_log}}
{{nginx_error_log}}
if ($scheme != "https"😉 {
rewrite ^ https://$host$uri permanent;
}
location ~ /.well-known {
auth_basic off;
allow all;
}
{{settings}}
location ~/(wp-admin/|wp-login.php) {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
proxy_max_temp_file_size 0;
proxy_connect_timeout 7200;
proxy_send_timeout 7200;
proxy_read_timeout 7200;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
}
location / {
{{varnish_proxy_pass}}
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Varnish;
proxy_redirect off;
proxy_max_temp_file_size 0;
proxy_connect_timeout 720;
proxy_send_timeout 720;
proxy_read_timeout 720;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
}
location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map)$ {
add_header Access-Control-Allow-Origin "*";
expires max;
access_log off;
}
if (-f $request_filename) {
break;
}
}