首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反向代理不向应用程序传递查询字符串

反向代理不向应用程序传递查询字符串
EN

Stack Overflow用户
提问于 2020-10-12 02:56:56
回答 1查看 515关注 0票数 3

我创建了一个rails应用程序,它被部署到我的Vultr服务器的一个子目录中。不知何故,后台没有考虑任何GET参数。例如,来自ForestAdmin API的调用不读取GET参数(see issue here)。另外,我的搜索页面没有接收到GET参数,例如生产环境中的this search query,我得到了以下日志:

正如您所看到的,在标题中,«»是空白的,因为它应该显示q参数。

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

以下是我的路线:

代码语言:javascript
复制
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配置:

代码语言:javascript
复制
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;
}

代码语言:javascript
复制
location /dictionnaire {
    try_files $uri $uri/ /dictionnaire/index.php?q=$uri&$args;
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-18 20:17:07

问题

proxy_pass没有将查询字符串转发到rails应用程序

解决方案

$is_args添加到代理pass语句中。这包括空字符串或“?”取决于请求中的存在查询字符串。

$args$query_string添加到代理pass语句中。这会将查询字符串附加到代理请求中。

示例

而不是:

代码语言:javascript
复制
proxy_pass http://127.0.0.1:3000$uri;

执行以下操作:

代码语言:javascript
复制
proxy_pass http://127.0.0.1:3000$uri$is_args$args;

参考文献

Nginx http核心模块(导航到嵌入式变量):http://nginx.org/en/docs/http/ngx

https://stackoverflow.com/a/8130872/806876

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64307916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档