gpt4 book ai didi

ruby-on-rails - 如何使用nginx、capistrano和passenger部署React前端+Rails api后端

转载 作者:行者123 更新时间:2023-12-03 09:01:11 25 4
gpt4 key购买 nike

我正在部署一个应用程序,其中使用 create-react-app 创建 React 前端,并使用 Rails API 作为后端。我对配置网络服务器和代理不太了解,所以我不确定如何让它在生产中工作。我正在将应用程序部署到 Amazon EC2 实例上的 Ubuntu。 Nginx 是网络服务器。我需要对其进行配置,以便 Nginx 提供来自 client/build 目录的静态文件,然后对 /api 发出的任何请求都会转到在端口 3001 上运行的 Rails 应用程序。现在,Nginx 正在为 index.html 提供服务,并且 Javascript 运行正常,但对 /api 的请求未到达正确的位置。关于如何配置 Nginx 来做到这一点有什么想法吗?这是我的 /etc/nginx/sites-enabled/default 文件:

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name mydomain.com;
passenger_enabled on;
rails_env staging;
root /home/ubuntu/app-name/current/client/build;
index index.html;

location /api {
proxy_pass http://127.0.0.1:3001;
}
}

我错过了什么?如何让 Rails 应用程序在端口 3001 上运行并使所有对 /api 的请求都到达那里?我需要在此配置中使用单独的 server block 吗?

最佳答案

我不知道您是否已经解决了您的问题,以及此解决方案是否适用于您,但我认为它可能对其搜索此问题的其他人有用。

我使用 Puma 作为应用程序服务器来运行我的 Rails 5 api。

这是我的开发环境的配置文件:

upstream app {
# Path to Puma SOCK file, here is where you make the connection to your application server
server unix:/path/to/your/puma.sock fail_timeout=0;
}
server {
listen 80;
server_name mydomain.com;

# this is where my react-app is located
root /var/www/development/ram/public/;
index index.html index.htm;

# Serve the static content (React app)
location / {
try_files $uri /index.html =404;
}

location /api {
# Insert your public app path
root /your/rails-app/path/public;
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}

error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}

所以比较,我认为你的问题可以通过添加一个指向你的rails api公共(public)目录的根指令来解决

我希望这能为您提供一些有关如何配置的提示

关于ruby-on-rails - 如何使用nginx、capistrano和passenger部署React前端+Rails api后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50069654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com