2012-11-28 99 views
2

我有一些Nginx的問題(設置爲反向代理)在Apache面前。我使用Apache來提供PHP文件和應用.htaccess規則。Nginx反向代理(靜態文件在Apache重寫)

Nginx可以正常工作,但是.htaccess中的一些重寫不會。

我用timthumb.php管理像媒體:

/cache/150/100/file.jpg > /media/thumb.php?src=images/file.jpg&w=150&h=100 

重寫規則僅適用於PHP應用程序,但它不會與上述靜態文件的工作。 當我嘗試執行我自己的靜態規則時,Nginx會返回404。

RewriteEngine On 

RewriteRule ^cache/([0-9]+)/([0-9]+)/([a-z0-9_\-\.\/]+)$ /media/thumb.php?src=images/$3&w=$1&h=$2 [L] 
RewriteRule ^upload/([0-9]+)/([0-9]+)/([a-z0-9_\-\.\/]+)$ /media/thumb.php?src=upload/$3&w=$1&h=$2 [L] 

<Files .*> 
    Order Deny,Allow 
    Deny From All 
</Files> 

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .* index.php/$0 [PT] 

回答

1

我想你是直接通過nginx服務你的「/ upload」和「/ cache」目錄 - 而不會將它傳遞給apache。

嘗試以下規則:

location ^~ /upload { 
     ....... 
} 

location ^~ /cache { 
     ....... 
} 

的地方之前,你在服務器配置nginx的你的靜態文件。讓我知道它是否工作 - 如果不行 - 粘貼也是nginx配置的一部分。

更多閱讀:http://wiki.nginx.org/HttpCoreModule#location

要看你是怎麼代理過程中配置的位置 - 他們有不同的優先級。