[英]NGINX and environment variables from configuration file
我正在尝试通过它的配置文件将一些环境变量设置为nginx。 我正在使用nginx / 0.8.53而且它不起作用。
server {
listen 80;
server_name localdictus;
root /opt/vdmo_dictus/public; # <--- be sure to point to 'public'!
passenger_enabled on;
rails_env development;
env VDMO_MANDANT = "somevalue";
}
这是错误消息:
unknown directive "env" in /opt/nginx/conf/nginx.conf:43
文档告诉我有一个“env”命令......所以我做错了什么? http://wiki.nginx.org/CoreModule#env
通过shell上的导出设置环境变量顺便说一句,不是我的应用程序的选项。
以下是这些行:
37: server {
38: listen 80;
39: server_name localdictus;
40: root /opt/vdmo_dictus/public; # <--- be sure to point to 'public'!
41: passenger_enabled on;
42: rails_env development;
43: env VDMO_MANDANT = "somevalue";
44: }
问候,
亚历克斯
不要传递env指令。 只需在启动nginx时使用-E
标志:
sudo -E /usr/local/nginx/sbin/nginx
使用nginx为rails应用程序设置环境变量的解决方案。
例如,您的RAILS_ROOT是:/ opt / myapp_MANDANT
然后,以下代码将从RAILS_ROOT路径中提取MANDANT并设置为rails env。
split = RAILS_ROOT.split("_")
puts split.inspect
if split.size > 1
ENV['VDMO_SYSTEM'] = split[2]
ENV['VDMO_MANDANT'] = split[1]
elsif split.size > 0
ENV['VDMO_SYSTEM'] = nil
ENV['VDMO_MANDANT'] = split[1]
end
将此代码放在environment.rb文件中即可运行。
使用此approch的一个好方法是使用--bind选项mount。
例:
mkdir railsapp_mandant
mount -t /originalsource /railsapp_mandant
然后将rails app的公共路径设置为/ originalsource / public /而不是/ railsapp_mandant / public /
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.