Tôi đang cố gắng tạo tệp conf nginx có ít sự lặp lại trong đó. Tôi đang sử dụng nginx để phục vụ các tập tin tĩnh, và nó ủy nhiệm 404s hoặc nội dung php đến vị trí @varnish tên:Cách có nhiều khối vị trí sử dụng cùng một tên @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;
}
Đối với tình hình "chuẩn" theo đó nginx nên kiểm tra để xem nếu nó có một tập tin và sau đó vượt qua thông qua vào backend, sau hoạt động tốt:
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;
}
Tuy nhiên, đối với PHP, tôi thậm chí không muốn nó thử tập tin, nó sẽ chỉ ngay lập tức chuyển hướng yêu cầu để @varnish:
location ~ \.php$ {
rewrite . @varnish last;
}
Tuy nhiên, điều này dường như không hoạt động. Có vẻ như một nỗi đau có hai khối gần giống hệt nhau (một cho @backend và một cho php) cả hai tham chiếu cùng một proxy, và là loại vấn đề mà con người có thể quên đặt một cái gì đó trong một và không phải là khác.
Làm việc như một sự quyến rũ! – shrikeh