ruby-on-rails - Rails API 404 错误 - 使用 Capistrano、Nginx 和 Passenger 部署

标签 ruby-on-rails ubuntu nginx

我创建了一个 Rails API 项目,它可以在本地运行。 (如果我浏览到 localhost:3000/api/first,它会在浏览器上打印 true

我已按照此处的步骤操作 - https://gorails.com/deploy/ubuntu/14.04并在我的 EC2 Ubuntu 服务器上部署了 API。

如果我的 IP 地址是 - 1.2.3.4,如果我浏览到 http://1.2.3.4/,我会收到欢迎使用 Nginx 消息。但是,如果我浏览到 http://1.2.3.4/api/first,我会收到 404 错误。

这是我的/etc/nginx/sites-available/default

server {
    listen 80;
    listen [::]:80 ipv6only=on;

    server_name "";
    passenger_enabled on;
    rails_env    production;
    root         /home/ubuntu/rails/current/public;

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

如果我创建一个名为 api 的文件夹(在 /home/ubuntu/rails/current/public 中),并在其中创建一个名为 first 的文本文件,然后它会显示文件的内容。

最佳答案

安装 ngnix passenger 模块并添加到 nginx conf 文件的路径。

代码应该是这样的:

server {
    listen 80;
    server_name "";

    # Tell Nginx and Passenger where your app's 'public' directory is
    root /var/www/app_name/public;

    # Turn on Passenger
    passenger_enabled on;
    passenger_ruby /root/.rvm/gems/ruby-2.2.2/wrappers/ruby;
}

关于ruby-on-rails - Rails API 404 错误 - 使用 Capistrano、Nginx 和 Passenger 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43205340/

相关文章:

ruby-on-rails - Rails + Devise-自定义 Controller 中的Authenticate方法

ruby-on-rails - 条件代码 if-else 的 Rspec?

javascript - 即使元素已经存在于 DOM 中,如何断言该元素是否正在可视化显示?

c++ - 字符数组 c((SIGSEGV)(核心转储))

ruby-on-rails - Poltergeist/Capybara 测试无法间歇性地找到 CSS

ubuntu - EC2 实例、装载卷 DOS/MBR 引导扇区

java - 从 php 代码调用 java 应用程序时使用特定的 jvm 安装

nginx - docker run、docker exec 和日志

nginx - 在带有 rtmp 模块的 nginx 中使用时,工作 ffmpeg 命令失败

django+nginx+gunicorn 与 Cerbot 转换为 HTTPS 的问题