Конфигурация сервера nginx + apache под Symfony 2

Рассмотрим, как настроить на сервере связку nginx (фронтенд) + apache (бекенд) для корректной работы Symfony 2 с её функциональностью ассетов и пр. Основная идея в том, чтобы статика отдавалась через nginx, а php код через apache. Однако если статика не находится с помощью nginx (что бывает из-за генерации Assets), в этом случае надо вместо 404 ошибки - пробовать направлять запрос в Apache.

В виртуальном хосте nginx прописываем:

server {

    listen 80;
    server_name site.loc www.
site.loc
    
    access_log  /home/user/localserver/
site.loc/logs/nginx/access.log;

    # Статику пытаемся отдать через nginx, если 404 - то через apache
    location ~* \.(jpg|jpeg|css|gif|png|ico|bmp|swf|js)$ {
        access_log  off;
        root /home/user/localserver/
site.loc/public_html/web;
        try_files $uri $uri/ @backend;
    }
    
    # Всё кроме статики отдаём через apache
    location / {
        try @backend;
    }
    
    # Вешаем Apache на backend
       location @backend {
        proxy_pass http://127.0.0.1:81;
        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_connect_timeout    120;
        proxy_send_timeout    120;
        proxy_read_timeout    180;
       }

    # Закрываем доступ к файлам .htaccess .htpasswd
    location ~ /\.ht {
           deny  all;
    }

}

 

А в виртуальном хосте apache всё ещё проще:

<VirtualHost *:81>
    ServerName
site.loc
    ServerAlias www.
site.loc
    
    ServerAdmin stingmu@gmail.com
    DocumentRoot /home/user/localserver/
site.loc/public_html/web
    DirectoryIndex index.php index.html

    LogLevel notice
    ErrorLog /home/user/localserver/site.loc/logs/error.log
    CustomLog /home/user/localserver/site.loc/logs/access.log combined

    <Directory /home/user/localserver/site.loc/public_html//web>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all

        Require all granted
    </Directory>

</VirtualHost>