Доброго времени суток.
Собственно, хотелось убрать блокировку на диске. Для этого, как здесь
и предлагалось несколько раз, установил связку nginx+nginx. Второй
nginx отдаёт первому статику с диска, так как соединение по
tcp-сокету, то, по идее, первый nginx, читая обычный сокет, не будет
блокироваться и будет всегда готов принять соединение
тут всё красиво
и выдать информацию из памяти(если она там есть), даже если диск
сильно загружен.
а вот тут встаёт вопрос - как frontend nginx узнает, есть ли информация
в памяти и что именно он должен её сам отдавать, а не проксировать
запрос на backend nginx.
Нехорошо сказал, в памяти - имелось ввиду в кеше фс в данном
конкретном случае (набор картинок для дизайна сайта, яваскрипты...).
Я так понял идея в том, чтобы первый nginx с маленьким поличеством
worker_threads никогда не блокировался и всегда мог принять
соединение, а второй - пусть блокируется сколько угодно, да и можно
ему worker_threads увеличить (если он на отдельной машине будет).
Правда в таком случае совершенно не понятно почему
location = /index.php {
fastcgi_pass 127.0.0.1:1026;
fastcgi_param SCRIPT_FILENAME
/srv/www/vhosts/example.com$fastcgi_script_name;
include fastcgi_params;
}
в бакенде?
На этом nginx блокироваться не будет, и это нужно перенести во
фронтенд. Тогда пока 2-й nginx будет заблокирован на файлах первый
сможет отдавать хотя бы динамику ожидая когда 2-й очухается.
index.php возвращал x-accel-redirect на /saves поэтому он там и был, не
догадался я что-то оставить его на фронтенде. Сейчас перенёс обработку
индекса на фронтенд, на бэкенде только сами файлы.