Nginx server_name 正则表达式匹配未设置 passenger_app_env
Nginx server_name regex match not setting passenger_app_env
Nginx:使用 passenger-install-nignx-module
构建
普通版:5.0.28
OS: Ubuntu 14.04
我已将我的每个应用程序符号链接到它们自己的一组环境文件夹中:
- /存储库
- /development.manager
- /应用
- ...
- /test.manager
- /staging.manager
- ...
实际文件夹位于我硬盘上的另一个位置。所有这些文件夹都是指向该文件夹的符号链接。
问题是 Nginx 似乎没有正确设置 passenger 环境变量。检查日志它会抛出一个没有意义的应用程序错误(并且 nginx 配置是自发生故障以来唯一更改的内容)。此外,错误页面显示状态:
Because you are running this web application in staging or production
mode, the details of the error have been omitted from this web page
for security reasons.
这意味着它没有使用开发环境,即使日志中的 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 似乎不会解释变量。我现在正在使用自定义 Bash/Ruby 脚本来遍历我的 environments/app 名称并生成配置块。
Nginx:使用 passenger-install-nignx-module
普通版:5.0.28
OS: Ubuntu 14.04
我已将我的每个应用程序符号链接到它们自己的一组环境文件夹中:
- /存储库
- /development.manager
- /应用
- ...
- /test.manager
- /staging.manager
- ...
- /development.manager
实际文件夹位于我硬盘上的另一个位置。所有这些文件夹都是指向该文件夹的符号链接。
问题是 Nginx 似乎没有正确设置 passenger 环境变量。检查日志它会抛出一个没有意义的应用程序错误(并且 nginx 配置是自发生故障以来唯一更改的内容)。此外,错误页面显示状态:
Because you are running this web application in staging or production mode, the details of the error have been omitted from this web page for security reasons.
这意味着它没有使用开发环境,即使日志中的 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 似乎不会解释变量。我现在正在使用自定义 Bash/Ruby 脚本来遍历我的 environments/app 名称并生成配置块。