gpt4 book ai didi

nginx - 一个服务器 block 中有多个 HTTP_X_ACCEL_MAPPING

转载 作者:行者123 更新时间:2023-12-04 23:52:27 26 4
gpt4 key购买 nike

正如标题所说,我需要两个 HTTP_X_ACCEL_MAPPING Nginx 中服务器块中的环境变量。

简单地指定两次配置不起作用,因为第二个会覆盖第一个。

这就是我所拥有的(不起作用):

server {
listen 80;

root /var/www/mysite/public;
server_name www.mysite.com;

passenger_enabled on;
rails_env production;
passenger_env_var HTTP_X_ACCEL_MAPPING /var/www/mysite/myfolder/=/loc/;
passenger_env_var HTTP_X_ACCEL_MAPPING /var/www/mysite/myotherfolder/=/loc2/;
passenger_pass_header X-Accel-Redirect;

location /loc {
root /var/www/mysite/myfolder;
internal;
}

location /loc2 {
root /var/www/mysite/myfolder;
internal;
}

}

只有一个 HTTP_X_ACCEL_MAPPING 一切正常但我无法指定多个。我尝试通过用逗号分隔它们来指定多个值,如下所示:
passenger_env_var HTTP_X_ACCEL_MAPPING /var/www/mysite/myfolder/=/loc/,/var/www/mysite/myotherfolder/=/loc2/;

但这没有用。
任何人都知道如何做到这一点?

最佳答案

2021/01 更新:
根据评论,Rack 现在支持:https://github.com/rack/rack/issues/1387#issuecomment-573355784
原答案:
根据机架 gem 的当前实现,这是不可能的。这是rack 2.0.1 (lib/rack/sendfile.rb)中的代码

def map_accel_path(env, path)
if mapping = @mappings.find { |internal,_| internal =~ path }
path.sub(*mapping)
elsif mapping = env['HTTP_X_ACCEL_MAPPING']
internal, external = mapping.split('=', 2).map(&:strip)
path.sub(/^#{internal}/i, external)
end
end
如您所见,此代码仅查找第一个 '=' 并假设它之前的所有内容都是内部路径,之后的所有内容都是外部路径。

关于nginx - 一个服务器 block 中有多个 HTTP_X_ACCEL_MAPPING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026098/

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