我試圖從Apache遷移到nginx使用Passenger在兩個實例託管一個Rails應用程序。該應用程序接受一個請求,這是一個圖像 - 如果圖像存在於/ system/logos/$ requestedimage那麼它應該得到服務,或者應該允許它在Rails應用程序中生成它(如果需要的話)緩存到/ system/logos)。nginx與乘客重寫規則
在Apache中我使用了以下內容:
RewriteCond %{DOCUMENT_ROOT}/system/logos/%{REQUEST_FILENAME} -f
RewriteRule ^/(.*)$ http://assets.clg.eve-metrics.com/system/logos/$1
這工作得很好。資產。子域是另一個子域,但具有相同的根,只是禁用了Passenger,專門設置爲託管靜態文件(expires-wise)。
在nginx的,我使用了以下內容:
server {
listen 80;
passenger_enabled on;
server_name clg.eve-metrics.com www.clg.eve-metrics.com;
root /opt/www/clg/current/public;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml text/css application/javascript;
gzip_disable msie6;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
if (-f $document_root/system/logos$request_filename) {
rewrite ^/(.*)$ http://assets.clg.eve-metrics.com/system/logos/$1 break;
}
}
這不工作這麼好。事實上,根本就是這樣。它永遠不會重定向到緩存路徑,它永遠不會碰到Rails應用程序。這就像nginx假設它是一個靜態資產,所以不會將它傳遞給Passenger。有沒有辦法阻止這種行爲,所以它擊中了應用程序?
我有這個相同的問題,我是Nginx的新手,所以這工作完美。謝謝。 – jspooner 2012-02-16 22:30:54
nginx.conf裏面有什麼指令? – Nick 2013-09-09 13:33:39