2013-05-07 33 views
0

這是我的Nginx服務器的配置文件Nginx的使用的Phusion客運URI路由

server { 
     listen 80; 
     location /node { 
       proxy_pass  http://127.0.0.1:8080; 
       include   /etc/nginx/proxy.conf; 
     } 
     location /ror { 
       root /var/www/ror/public; 
       passenger_enabled on; 
       proxy_cache  off; 
       proxy_pass_header Server; 
     } 
     location/{ 
       root /usr/share/nginx/www; 
     } 
} 

這主要是一個「HelloWorld的」設置同時測試運行節點和回報率的REST服務器。

問題是我需要有servername.com/ror轉發到/var/www/ror/public,以便RoR響應。我嘗試了一些配置,並且無法弄清楚如何正確轉發它。這個問題似乎是在ror URI段被傳遞到回報率,從而導致它尋找一個控制器,它返回一個404

的其它結構,改變根/var/www作品,只要我有/ror/public在URI。

那麼,有沒有辦法以這種方式在反向代理上執行子URI路由?


好的,所以我添加了重寫規則。

location /ror { 
     root /var/www/ror/public; 
     rewrite ^/ror/(.*)$ /$1 last; 
     passenger_enabled on; 
     proxy_cache  off; 
     proxy_pass_header Server; 
} 

的問題,但問題在於,現在則是從服務的默認根目錄的文件,這在我的安裝是/usr/nginx,並且完全無視所在地塊內的根。

**我感謝您的幫助。這是我第一次使用Nginx(通常是一個Apache惡魔),所以我在解釋這些命令時遇到了麻煩。

回答

0

我終於想通了。

我VHOST科:

server { 
     #server_name domain.com; 
     listen 80; 
     root /var/www/rails; 

     passenger_enabled on; 
     passenger_base_uri /todo; 

     rails_spawn_method smart; 
     rails_env development; 

     proxy_cache off; 
     proxy_pass_header Server; 

     location /node { 
       proxy_pass  http://127.0.0.1:8080; 
       include   /etc/nginx/proxy.conf; 
     } 
} 

我結束了創建一個名爲軌新的目錄,以及裏面我創建了一個符號鏈接到實際應用的公共目錄。

ln -s /var/www/todo/public /var/www/rails/todo 

此外,我沒有正確初始化乘客,這就是爲什麼它沒有響應並回饋錯誤。這種設置並不理想,考慮到我現在必須手動添加每個子URI應用程序,但它的工作原理。

0

/ror/a.txt/var/www/ror/public/ror/a.txt在本地fs中,因此您需要在location /ror中使用重寫規則。

rewrite ^/ror(.*)$ $1;