【问题标题】:Nginx server_name regex match not setting passenger_app_envNginx server_name 正则表达式匹配未设置passenger_app_env
【发布时间】:2016-10-21 05:22:18
【问题描述】:

Nginx:使用 passenger-install-nignx-module 构建

客运版:5.0.28

操作系统:Ubuntu 14.04


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

  • /存储库
    • /development.manager
      • /app
      • ...
    • /test.manager
    • /staging.manager
    • ...

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

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

因为您在登台或生产中运行此 Web 应用程序 模式,此网页已省略错误的详细信息 出于安全原因。

这意味着它没有使用开发环境,即使日志中的root 目录显示development.manager。这是我通过 url 访问的时候: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 应用程序中明确提出了一个错误,该应用程序将环境输出为字符串,它的字面意思是“$environment”...

【问题讨论】:

    标签: nginx passenger


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 2017-05-05
      • 1970-01-01
      • 2014-11-11
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多