Nginx:我如何为nginx配置中的路径提供变量?

时间:2012-09-23 18:19:55

标签: deployment nginx amazon-ec2

  • 我有一个Web应用程序,我在本地测试并在EC2实例上部署
  • 我正在使用本地 nginx配置,看起来像
location /static/ {       alias /home/me/code/p/python/myapp/static/;
    # if asset versioning is used
    if ($query_string) {
        expires max;
    }
}     location /templates/ {      alias /home/me/code/p/python/app/templates/;
    # if asset versioning is used
    if ($query_string) {
        expires max;
    }
}

在EC2实例上,唯一可以改变的是路径,例如

/home/me/code/p/python/myapp/static//User/ubuntu/code/p/python/myapp/static/

  • 为了实现这一点,我将配置更改为

~/code/p/python/myapp/static/

但这不起作用,它显示了路径

/etc/nginx/~/code/p/python/myapp/static/

哪个不对

问题 - 是否可以在nginx conf中包含环境变量?

我想要什么 - Nginx conf,它可以读取特定机器上的变量来创建路径,这样我就不必每台机器更改它,代码可以重复使用

谢谢

1 个答案:

答案 0 :(得分:0)

两种方法:

  1. 如上所述,符号链接是在机器上进行路径匹配的一种非常好的方法,同时将代码保存在一个地方。符号链接基本上是别名; if / link是/ file的符号链接,当你要求/ link时,你会得到/ file。

    ln -s /file /link
    
  2. 使用include语句。在nginx中,您可以include variables.conf;。 E.g。

    nginx.conf:

    include variables.conf
    
    ...
    
    http {
       listen $port;
       ... 
    }
    

    variables.conf:

    set $foo "Something";
    set $bar "Else";
    set $port 80;