Nginx server_name正则表达式匹配未设置passenger_app_env

时间:2016-06-20 03:38:04

标签: nginx passenger

Nginx:使用passenger-install-nignx-module

构建

乘客版本:5.0.28

操作系统:Ubuntu 14.04

我已将每个应用程序符号链接到他们自己的一组环境文件夹中:

  • /存储库
    • /development.manager
      • /应用
      • ...
    • /test.manager
    • /staging.manager
    • ...

实际文件夹位于我硬盘上的其他位置。所有这些文件夹都是指向该文件夹的符号链接。

问题是Nginx似乎没有正确设置乘客环境变量。检查日志会引发一个没有意义的应用程序错误(并且nginx配置是自事情发生以来唯一的改变)。此外,错误页面显示状态:

  

因为您在暂存或生产中运行此Web应用程序   模式,此网页中省略了错误的详细信息   出于安全考虑。

这意味着即使日志中的root目录显示development.manager,它也没有使用开发环境。这是我通过网址http://manager-development/访问时。

以下是我的nginx sites-enabled配置的相关摘录:

server {
  listen 80;
  server_name ~^manager-(?<environment>development|test)$;
  passenger_app_env $environment;
  passenger_ruby /home/vagrant/.rvm/gems/ruby-2.3.1@manager/wrappers/ruby;
  passenger_enabled on;
  root /home/vagrant/apps/$environment.manager/public;
  client_max_body_size 30M;
}

我有一种感觉,解决方案可能是我提供的答案here以及可能配置错误的nginx块的组合。

编辑:我在我的rails应用程序中明确地引发了一个错误,该错误将环境输出为一个字符串,它实际上是&#34; $ environment&#34; ...

1 个答案:

答案 0 :(得分:0)

我已经放弃了这种方法,因为在某些地方使用时,nginx似乎没有解释变量。我现在使用自定义Bash / Ruby脚本迭代我的环境/应用程序名称并生成配置块。