2012-06-24 2 views
0

У меня есть эта конфигурация Nginx:места подкаталога Nginx с переписыванием Друпало

server { 
    listen  80; 
    server_name example.com www.example.com; 

    location =/{ 
      root /var/www/example.com; 
      index index.php; 
    } 

    location/{ 
      root /var/www/example.com/Drupal; 
      index index.php index.html; 

      if (!-f $request_filename) { 
        rewrite ^(.*)$ /index.php?q=$1 last; 
        break; 
      } 

      if (!-d $request_filename) { 
        rewrite ^(.*)$ /index.php?q=$1 last; 
        break; 
      } 
    } 

    location ~ \.php$ { 

      set $php_root /var/www/example.com/Drupal; 

      if ($request_uri ~ ^/MassMail) { 
        set $php_root /var/www/example.com/MassMail; 
      } 

      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index index.php; 
      include /etc/nginx/fastcgi_params; 
      fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; 

    } 

У меня есть 2 приложения в PHP:

  • первых в /var/www/example.com/MassMail
  • второй в /var/www/example.com/Drupal (блог, Drupal)

мой сервер служит правильный два URL

example.com/ -> друпал блог

example.com/MassMail -> другое приложение

но это не служит изображение или JavaScript ... (ошибка 404)

для обслуживания IMG и т.д. я испытал много вещей, как это (например, ...):

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ { 
      expires   30d; 
      access_log  off; 
    } 

возможно отсутствует корневой каталог, но?

ответ

0

Вы PHP думает, что MassMail установлен в/(корень), попробуйте добавить второе место для staitc файлов:

location ~* ^/MassMail.+.(jpg|jpeg|gif|css|png|js|ico)$ { 
      expires   30d; 
      access_log  off; 
      root /var/www/xxx.com/MassMail; 
} 

Конфигурация # 2

location ~* ^/(.*)/.+.(jpg|jpeg|gif|css|png|js|ico)$ { 
    expires   30d; 
    access_log  off; 
    root /var/www/xxx.com/$1; 
} 

Конфигурация # 3

Разместите каждую конфигурацию приложения в специальном файле (пример для MassMail):

приложения/massmail.conf:

location ~ \.php$ { 

      set $php_root /var/www/xxx.com/Drupal; 

      if ($request_uri ~ ^/MassMail) { 
        set $php_root /var/www/xxx.com/MassMail; 
      } 

    location ~* ^/MassMail.+.(jpg|jpeg|gif|css|png|js|ico)$ { 
      expires   30d; 
      access_log  off; 
      root /var/www/xxx.com/MassMail; 
    } 

nginx.conf:

..... 
include applications/massmail.conf; 
+0

спасибо Сергею! на самом деле да, это работает ... но у меня есть 2 места статического контента для 2 приложений ... если у меня есть 75 приложений? 75 местоположений статического содержимого? для этого нет никакого общего способа? –

+0

Ну, на самом деле, у вас есть вторая конфигурация, но это не очень хорошая практика. Лучше всего использовать для каждого приложения специальный файл с конфигурацией (см. Пример №3) –

+0

спасибо за все :) –

Смежные вопросы