[英]How do I pass ImageMagick environment variables to nginx mongrels?
我的Rails应用程序使用ImageMagick,但是该应用程序在尝试执行ImageMagick命令(“ identify”)时失败。 我通过在Apache配置中传递以下环境变量来解决开发中的问题(正在运行Apache / Passenger):
SetEnv MAGICK_HOME /opt/local/var/macports/software/ImageMagick/6.5.9-0_0+q16
SetEnv DYLD_LIBRARY_PATH /opt/local/var/macports/software/ImageMagick/6.5.9-0_0+q16/opt/local/lib
SetEnv PATH /usr/bin:/opt/local/var/macports/software/ImageMagick/6.5.9-0_0+q16/opt/local/bin
但是,我的生产环境正在运行Nginx和Mongrel(不是我设置的),并且我不确定如何将这些变量传递给应用程序。 我的nginx.conf文件当前如下:
# user and group to run as
user mouthbreather mouthbreather;
worker_processes 4;
# pid of nginx master process
pid /var/run/nginx.pid;
events {
worker_connections 8192;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/engineyard/nginx/access.log main;
error_log /var/log/engineyard/nginx/error.log notice;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/sites/*.conf;
}
所以我的问题是:
谢谢!
简而言之,您不会使用nginx通过环境变量传递任何内容,而是使用HTTP标头或fastcgi参数。
在您的情况下,您甚至不需要,因为您可以正确地处理事务并将mongrels作为单独的进程运行-在THEIR环境中设置环境变量。 Nginx与它无关。
Nginx不能与环境变量一起使用,并且可能不会在很长一段时间内出现,直到有人错误地将其与第三方模块一起破解,然后主流仍不支持该模块。
造成这种情况的原因有很多,主要是与设计,安全性和管理相关,但是最终,开发人员和社区认为,当设计HTTPd来处理可能会占用资源的资源时,处理环境变量不是HTTPd的地方。不在同一台计算机上(如何将环境变量传递给在附近另一台计算机上侦听的进程?)。
此外,passenger是第三方模块,在实现和设计方面都受到了破坏,因为它在nginx中运行,因为它在nginx中运行应用程序流程(这是理论上您可以传递环境变量,但这不是nginx的工作方式)。
推荐的处理此类情况的方法是在nginx之外启动应用程序(如果需要,在其中使用环境变量),然后将proxy或fastcgi传递给您的应用程序,还可以选择在标头或fastcgi params中包含必要的额外数据。 另外,您的应用程序可以通过某种方式确定其中的正确设置,例如settings.local文件(这在python设置中非常常见)。
有很多方法可以使nginx不处理环境变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.