【发布时间】:2013-05-09 00:45:49
【问题描述】:
这是我的 Nginx 服务器配置文件
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 服务器运行的 Node 和 RoR。
问题是我需要将servername.com/ror 转发到/var/www/ror/public,以便 RoR 做出响应。我已经尝试了一些配置,但无法弄清楚如何让它正确转发。问题似乎是ror URI 段被传递给 RoR,这导致它寻找返回 404 的控制器。
只要我在 URI 中包含 /ror/public,另一种配置,将 root 更改为 /var/www 就可以工作。
那么,有没有办法以这种方式在反向代理上执行子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 Fiend),所以我很难理解它是如何解释这些命令的。
【问题讨论】:
标签: ruby-on-rails nginx passenger reverse-proxy