3
  • 我有一个 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,它可以读取特定机器上的变量来创建路径,这样我就不必在每台机器上更改它并且代码是可重用的

谢谢

4

1 回答 1

0

这样做的两种方法:

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

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

    nginx.conf:

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

    变量.conf:

    set $foo "Something";
    set $bar "Else";
    set $port 80;
    
于 2014-02-12T05:42:13.100 回答