使用Rails应用程序和Vue.js应用程序设置Nginx + Passenger

时间:2018-11-29 14:27:07

标签: ruby-on-rails nginx vue.js passenger

我有一个带有Passenger的Nginx远程服务器,该服务器通过公共IP 12.34.56.78为Rails API提供服务。

现在,我已经将Vue.js应用程序部署到了同一主机,并且能够通过输入IP地址12.34.56.78从浏览器访问该应用程序,但是当我尝试登录时,出现错误{{1 }}

这是我的CONNECTION REFUSED

启用应用

nginx.conf

Vue.js应用

server {
    listen       3000;
    server_name  bikeramp.local;

    root /home/deploy/bikeramp/current/public;
    passenger_enabled on;
    rails_env production;
    access_log /var/log/nginx/bikeramp.access.log;
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

我已经确认我的两个应用程序都由Nginx提供服务:

server {
        listen   80 default_server;
        server_name  bikeramp_front.local;

        location / {
            root   /home/jdomanski/bikeramp-front;
            try_files $uri $uri/ /index.html;
        }
    }

我能够从IP地址12.34.56.78/signin访问我的Vue.js应用程序,但是当我从前端登录表单发出HTTP请求时,出现错误

netstat -tln

tcp        0      0 127.0.0.1:41382         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:50022           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN    

这是我向API发出HTTP请求的代码

OPTIONS http://localhost:3000/api/users/login net::ERR_CONNECTION_REFUSED

当我通过指向远程IP从本地计算机上的前端发出请求时,现在出现错误:

axios.defaults.baseURL = 'http://localhost:3000'

如何配置Nginx使其从前端应用程序向后端应用程序发出请求,该请求位于同一台Nginx服务器所服务的同一主机上。我的XMLHttpRequest cannot load http://54.38.36.242/api/users/login. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. The response had HTTP status code 405.文件中可能缺少某些内容。你能帮助我吗?我应该在Nginx中启用CORS吗?

1 个答案:

答案 0 :(得分:3)

您要从其他域提供前端服务,因此,是的,您需要带有允许的Access-Control-Allow-Origin*或您在dev中使用的域)的CORS。

编辑:您可以为此使用NGINX或Rails(例如https://github.com/cyu/rack-cors