【发布时间】:2014-03-19 14:01:04
【问题描述】:
我配置了 grunt-connect-proxy(实际上基于 http-node-proxy)将我在 localhost:3000 上的请求代理到我托管的后端 myserver.com。
后端应用在 Nginx(+ nginx 乘客模块)+ 乘客上运行。这里没有反向代理。
nginx的配置是这样的:
server {
listen 80 default_server;
root /home/deployer/app/current/public;
passenger_enabled on;
access_log /var/log/nginx/app.access.log;
if (-f $document_root/system/maintenance.html){
rewrite ^(.*)$ /system/maintenance.html;
break;
}
location ~* ^/assets/ {
try_files $uri 404;
}
location ~* ^.+.(css|js|jpeg|jpg|gif|png|ico)$ {
expires 30d;
}
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
实际上就像这里描述的那样: https://www.digitalocean.com/community/articles/how-to-install-rails-and-nginx-with-passenger-on-ubuntu
第一个请求没问题:当我输入localhost:3000 时,我实际上是在myserver.com 上。
HTTP 代码 = 200。
当我尝试转到受保护的页面(使用 Devise)时,比如说 http://localhost:3000/admin/articles,我得到一个 HTTP 代码 = 302,但我被重定向到 myserver.com。
这意味着:我可以登录myserver.com,但不能登录localhost:3000。
我如何告诉 Rails 或 Devise 考虑代理地址?
【问题讨论】:
标签: ruby-on-rails node.js nginx devise proxy