Я только что установил новый сервер с nginx (в котором я новичок) и PHP. На моем сайте существует по существу 3 разных типа файлов:
Это мое понимание от этот вопрос и эта страница что статические файлы не нуждаются в особой обработке и будут обрабатываться как можно быстрее.
Я последовал ответу из приведенного выше вопроса, чтобы настроить кеширование файлов PHP, и теперь у меня есть такая конфигурация:
location ~ \.php$ {
try_files $uri =404;
fastcgi_cache one;
fastcgi_cache_key $scheme$host$request_uri;
fastcgi_cache_valid 200 302 304 30m;
fastcgi_cache_valid 301 1h;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/example$fastcgi_script_name;
fastcgi_param HTTPS off;
}
Однако теперь я хочу предотвратить кеширование на форуме (для всех или только для авторизованных пользователей - не проверял, возможно ли последнее с помощью программного обеспечения форума). Я слышал, что внутри локационных блоков находится фраза «if is evil», поэтому я не уверен, что делать дальше. С if внутри блока местоположения я бы, вероятно, добавил это посередине:
if ($request_uri ~* "^/forum/") {
fastcgi_cache_bypass 1;
}
# or possible this, if I'm able to cache pages for anonymous visitors
if ($request_uri ~* "^/forum/" && $http_cookie ~* "loggedincookie") {
fastcgi_cache_bypass 1;
}
Будет ли это работать нормально или есть лучший способ добиться этого?
Вы можете использовать, если в серверном блоке это совершенно безопасно. Рабочий пример с соответствующими строками:
server {
listen 80;
...skip...
if ($uri ~* "/forum" ) {set $no_cache 1;}
...skip...
location ~ \.php$ {
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
...other fastcgi-php content...
}
Другой способ сделать это - создать отдельный блок местоположения над блоком местоположения по умолчанию, чтобы уловить и по-разному действовать в отношении вещей, предназначенных для форума:
location ~ ^/forum/.*\.php$ {
// forum php setup here
}
location ~ \.php$ {
// regular php setup here
}
Это не совсем СУХОЙ, но он прост и легко читается, когда вы вернетесь к нему через 6 месяцев.