2012-06-24 51 views
0

我的nginx的这种配置:位置子目录的nginx与重写drupal的

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; 

    } 

我在PHP 2应用程式:

  • 首先在/var/www/example.com/MassMail
  • 第二次在/var/www/example.com/Drupal(一个Drupal博客)

我的服务器服务于右侧的两个URL

example.com/ - > Drupal的博客

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

谢谢所有:) –