2012-06-14 21 views
9

'u nasıl kullanır? İçinde çok az yineleme olan bir nginx conf dosyası oluşturmaya çalışıyorum. nginx bir dosya olup olmadığını görmek için kontrol edin ve daha sonra geçmelidir sayedeBirden çok konum bloğu, aynı adlandırılmış @location

location @varnish { 
    proxy_redirect off; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass_header Set-Cookie; 
    proxy_pass http://localhost:6081; 
    proxy_set_header Request-URI $request_uri; 
} 

"standart" durum için: Ben statik dosyalarının sunulması nginx kullanıyorum ve adlandırılmış konum @varnish için 404'lerin veya php içeriği Proxies arka uca doğru, aşağıdaki çalışıyor:

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
    access_log  off; 
    add_header  Pragma public; 
    add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 
    expires   max; 
    open_file_cache_valid 120m; 
    try_files $uri @varnish; 
} 

Ancak PHP, ben bile, bu dosya deneyin istemiyorum sadece hemen @varnish isteği yönlendirmesi gerekir:

location ~ \.php$ { 
    rewrite . @varnish last; 
} 

Ancak, bu işe görünmez. Aynı vekâyete atıfta bulunan iki ayrı yakın blokun (biri @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

cevap

12

Proxy ayarlarını sunucu bağlamına koyar ve konumların bunları devralmasına izin verirseniz, çoğaltılacak çok şey yoktur. Proxy hedefini değiştirmeyi kolaylaştırmak için bir upstream bloğu da ayarlayabilirsiniz:

upstream _varnish { 
    server localhost:6081; 
} 

server { 
    proxy_redirect off; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Request-URI $request_uri; 
    proxy_pass_header Set-Cookie; 

    location @varnish { 
    proxy_pass http://_varnish; 
    } 

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
    access_log off; 
    add_header Pragma public; 
    add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 
    expires max; 
    open_file_cache_valid 120m; 
    try_files $uri @varnish; 
    } 

    location ~ \.php$ { 
    proxy_pass http://_varnish; 
    } 
} 
+0

Bir çekicilik gibi çalışmışsınız! – shrikeh

İlgili konular