Deployment Nginx:如何为Nginx配置中的路径提供变量? 我有一个在本地测试并部署在EC2实例上的web应用程序 我使用的是localnginx配置,看起来像

Deployment Nginx:如何为Nginx配置中的路径提供变量? 我有一个在本地测试并部署在EC2实例上的web应用程序 我使用的是localnginx配置,看起来像,deployment,nginx,amazon-ec2,Deployment,Nginx,Amazon Ec2,在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 co

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


谢谢

有两种方法可以做到这一点:

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

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

    nginx.conf:

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

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

  • 与其更改生产服务器,不如在计算机上设置符号链接以匹配服务器?如果可能的话,保持路径不变会带来很多好处
    set $foo "Something";
    set $bar "Else";
    set $port 80;