2012-06-24 48 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

謝謝所有:) –