Rails6:NGINX乘客的多个应用程序不提供来自子URI的POST请求



我想在同一台服务器上使用NGINX和Passenger在两个子URI上运行两个Rails6应用程序。根是一个静态的index.html.

索引页从根目录正确加载。访问子URI时,Rails应用程序的根视图也是如此。然而,随后的表单提交throw 404。

当我在root(/(而不是静态索引页上运行这两个应用程序时,它们都运行得很好。

配置文件是启用了站点的文件夹--

server {
listen 80;
server_name _;
passenger_enabled on;
passenger_ruby /usr/bin/ruby;
passenger_app_env development;
location / {
root /var/www/html;
}
location ~ ^/rbf(/.*|$) {
alias /var/www/rails6-bootstrap-flatpickr/public$1;
passenger_base_uri /rbf;
passenger_app_root /var/www/rails6-bootstrap-flatpickr;
passenger_document_root /var/www/rails6-bootstrap-flatpickr/public;
}
location ~ ^/cdb(/.*|$) {
alias /var/www/dashboard/public$1;
passenger_base_uri /cdb;
passenger_app_root /var/www/dashboard;
passenger_document_root /var/www/dashboard/public;
}

error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}

NGINX访问日志有以下行(我已将我的ip地址替换为aaa.bbb.ccc.ddd(

[19/Nov/2020:12:00:59 +0000] "POST /display_router HTTP/1.1" 404 209 "http://aaa.bbb.ccc.ddd/cdb" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"

在开发过程中,我让每个应用程序都在自己的Rails服务器上运行。表格定义为:

<%= form_with(url: "/process_dates") do %>

<%= form_with(url: "/display_router") do %>

表单被分别发布到根文件夹/process_dates和/didisplay_router。但在云服务器上,每个应用程序都在自己的文件夹中,该文件夹是rails根目录。

所以我只是把云服务器上的表单定义改成了

<%= form_with(url: "/rbf/process_dates") do %>

<%= form_with(url: "/cdb/display_router") do %>

它奏效了。

相关内容

  • 没有找到相关文章

最新更新