2012-11-28 79 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

要看你是怎么代理过程中配置的位置 - 他们有不同的优先级。