Ruby on rails 反向代理未向应用程序传递查询字符串

Ruby on rails 反向代理未向应用程序传递查询字符串,ruby-on-rails,nginx,nginx-location,Ruby On Rails,Nginx,Nginx Location,我创建了一个rails应用程序,它被部署到我的Vultr服务器的子目录中。不知何故,后端不考虑GET参数。例如,来自don't read GET parameters()的调用。此外,我的搜索页面未接收GET参数,例如,在生产中,我获得以下日志: 如您所见,在标题中,«»为空,因为它应该显示q参数 我的Rails应用程序配置似乎是正确的,所以我想这是一个服务器配置问题 以下是我的路线: Rails.application.routes.draw do scope 'dictionnai

我创建了一个rails应用程序,它被部署到我的Vultr服务器的子目录中。不知何故,后端不考虑GET参数。例如,来自don't read GET parameters()的调用。此外,我的搜索页面未接收GET参数,例如,在生产中,我获得以下日志:

如您所见,在标题中,«»为空,因为它应该显示q参数

我的Rails应用程序配置似乎是正确的,所以我想这是一个服务器配置问题

以下是我的路线:

Rails.application.routes.draw do
    scope 'dictionnaire' do
        mount ForestLiana::Engine => '/forest'
        root to: "home#index"
        resources :words, path: "definition", param: :slug

        post '/search', to: 'words#search'
        get '/recherche', to: 'words#search_page', as: 'recherche'
        get '/:letter', to: 'words#alphabet_page', param: :letter, as: "alphabetic_page"

        post '/api/get_synonyms', to: 'api#get_synonyms'
    end
    
end
这是我的nginx配置:

location @ruby-app {
#    rewrite ^/dictionnaire-app(.*) $1 break;
    rewrite ^/dictionnaire$ /dictionnaire/ permanent;
    rewrite ^/dictionnaire/definition-(.*) /dictionnaire/definition/$1 permanent;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:3000$uri;
    #proxy_set_header X-Forwarded-Proto https;
}

location ~ /dictionnaire(.*)$ {    
    alias /opt/dictionnaire-app/public;
    try_files $1 @ruby-app;
}

知道什么是阻止参数传递的问题吗?

问题 proxy_pass未将查询字符串转发到rails应用程序

解决方案 将
$is_args
添加到您的代理通行证声明中。这包括空字符串或“?”,具体取决于请求中的状态查询字符串

$args
$query\u string
添加到代理传递语句中。这会将查询字符串附加到代理请求

例子 而不是:

proxy_pass http://127.0.0.1:3000$uri;
做:

工具书类 Nginx http核心模块(导航到嵌入变量):


您是如何使用puma、unicorn或任何其他工具运行rails服务器的?rails日志显示了什么?如果您执行
tail-f log/development.log | grep-A 5'Started'
,那里的日志语句是否包含参数?如果没有,nginx日志会显示什么<代码>sudo tail-f var/log/nginx/access.log | grep请添加示例请求。rails服务器正在使用Puma。我在问题中添加了一个带有日志的示例请求@NavedKhan没有进入nginx目录的access.log,但网站的nginx错误日志没有显示任何错误。谢谢
proxy_pass http://127.0.0.1:3000$uri;
proxy_pass http://127.0.0.1:3000$uri$is_args$args;