У меня есть дистрибутив CentOS версии 6.6 (Final), на котором запущен экземпляр Varnish (порт 80) и Apache 2.2 (порт 81).
Apache читает файл из NFS.
Проблема, с которой я сталкиваюсь (не всегда, но большую часть времени), заключается в следующем: если я создаю новый файл в NFS и пытаюсь загрузить этот файл непосредственно на порт 81 (в обход Varnish), Apache выдает ошибку 404.
--2018-08-03 16:11:28-- http://www.example.com:81/test/lorem-ipsum-2/index.html
Resolving www.example.com... ::1, 127.0.0.1, 10.xxx.xxx.xxx
Connecting to www.example.com|::1|:81... connected.
HTTP request sent, awaiting response... 404 Not Found
2018-08-03 16:11:29 ERROR 404: Not Found.
Только примерно через одну минуту он может вернуть 200 с содержимым файла.
wget "http://www.example.com:81/test/lorem-ipsum-2/index.html"
--2018-08-03 16:12:40-- http://www.example.com:81/test/lorem-ipsum-2/index.html
Resolving www.example.com... ::1, 127.0.0.1, 10.xxx.xxx.xxx
Connecting to www.example.com|::1|:81... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4524 (4.4K) [application/json]
Saving to: “index.html”
100%[===================================================================================================================================================================================================>] 4,524 --.-K/s in 0s
2018-08-03 16:12:40 (122 MB/s) - “index.html” saved [4524/4524]
Кроме того, может быть важно сказать, что если я сделаю cat для этого файла до истечения одной минуты, Apache сможет вернуть 200 OK.
cat /data/nfs_shared/httpd/htdocs/test/lorem-ipsum-2/index.html
Может кто поможет в этом.
Спасибо
NFS кэширует по умолчанию из соображений производительности.
Если вы не хотите ждать ни минуты, вы можете смонтировать общий ресурс без кешей каталогов: acdirmin=0,acdirmax=0