这是我的 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。
/var/www
另一个配置,只要我包含/ror/public
在 URI 中,就可以将 root 更改为有效。
那么,有没有办法以这种方式在反向代理上执行子 URI 路由呢?
好的,所以我添加了重写规则。
location /ror {
root /var/www/ror/public;
rewrite ^/ror/(.*)$ /$1 last;
passenger_enabled on;
proxy_cache off;
proxy_pass_header Server;
}
然而,问题是现在它正在从默认根目录提供文件,在我的安装中/usr/nginx
,它完全忽略了 location 块内的根目录。
**感谢您的帮助。这是我第一次使用 Nginx(通常是 Apache Fiend),所以我很难理解它是如何解释这些命令的。