Там много чего крутится и хостится, и настал такой случай, который описан и решен не раз и не одним мной.
Итак, фронтэнд - nginx, бэкэнд - apache2, на сайте установлен Drupal. Когда imagecache должен генерить картинки и выдавать их, nginx воспринимает их как статику, пытается найти и не может. Соответственно, в логах куча ошибок, а в интерфейсе пусто, вместо картинок.
Решается все следующим образом: когда nginx не может найти что-то, он выдает ошибку 404. Ну вот мы и сделаем, чтоб он вместо своей 404 ошибки он перенаправлял запросы в апач, а тот уже разберется сам:
# то, что будет отдавать nginx
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
root /var/www/vhosts/example.com/www;
error_page 404 = @backend;
}
# запрещаем доступ к .ht - файлам
location ~ /\.ht {
deny all;
}
# описываем наш бэкэнд
location @backend {
proxy_pass http://example.com:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
# все что не попало в предыдущие правила уходит на бэкэнд
location / {
try_files $uri @backend;
}