如何在puppet vhost中定义第二个nginx位置子句?

时间:2014-06-11 02:58:10

标签: nginx puppet

我试图设置一个puppet配置来定义一个有多个location子句的nginx vhost,其中一个提供来自本地目录的静态内容,另一个提供另一个本地服务器的代理。 nginx module的文档非常差,因此我很难理解如何执行此操作。

这里基本上是我试图实现的nginx配置(我手动创建):

server {
    listen       8080;
    server_name  myapp.example.com;

    location /admin/ {
        alias /path/to/my/app/;
        index index.html;
    }

    location / {
        # pass everything else to backend server
        proxy_pass http://localhost:3000;
    }
}

这是我到目前为止的nginx配置:

node 'web00' {
    class { 'nginx': }

    nginx::resource::vhost { 'myapp.example.com':
        www_root => '/path/to/my/app',
    }

    nginx::resource::upstream { 'backend_nodejs':
        members => [
            'localhost:9000',
        ],
    }
}

如何在myapp.example.com vhost puppet配置子句中添加其他位置子句?

1 个答案:

答案 0 :(得分:3)

使用nginx :: resource :: location definition:

node 'web00' {
    class { 'nginx': }

    nginx::resource::upstream { 'backend_nodejs':
        members => [
            'localhost:9000',
        ],
    }

    nginx::resource::vhost { 'myapp.example.com':
        proxy => 'http://backend_nodejs'
    }

    nginx::resource::location { '/admin':
      location => '/admin/',
      vhost => 'myapp.example.com',
      location_alias => '/path/to/my/app/'
      index_files => ['index.html']
    }    
}