【问题标题】:How to define a second nginx location clause inside a puppet vhost?如何在 puppet vhost 中定义第二个 nginx 位置子句?
【发布时间】:2014-06-11 02:58:10
【问题描述】:

我正在尝试设置一个 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 配置子句中添加额外的 location 子句?

【问题讨论】:

    标签: nginx puppet


    【解决方案1】:

    使用 nginx::resource::location 定义:

    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']
        }    
    }
    

    【讨论】:

    • 这几乎奏效了。我在虚拟主机中删除了 www_root,因为它不允许与代理结合使用。我还将“index_files = [”更改为“index_files => [”(缺少>)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2016-08-25
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多