If statement 将if-else与Puppet nginx jfryman模块一起放入nginx Vhost配置中

If statement 将if-else与Puppet nginx jfryman模块一起放入nginx Vhost配置中,if-statement,nginx,rewrite,puppet,conditional-statements,If Statement,Nginx,Rewrite,Puppet,Conditional Statements,我想为一个有一些if条件语句的网站自动化nginx vhost配置。我试图用puppet forge模块来实现,但无法配置文件。我想要的配置如下所示: server { listen 8080; server_name abcqwe.com; root /data/vvv/abcqwe.com; index index.php index.html index.htm; access_log /data/vvv/abcqwe.com/logs/access.log

我想为一个有一些if条件语句的网站自动化nginx vhost配置。我试图用puppet forge模块来实现,但无法配置文件。我想要的配置如下所示:

 server {
  listen   8080;

  server_name abcqwe.com;

  root /data/vvv/abcqwe.com;
  index index.php index.html index.htm;

  access_log /data/vvv/abcqwe.com/logs/access.log;
  error_log  /data/vvv/abcqwe.com/logs/error.log;

  location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to index.html
    #try_files $uri $uri/ /index.html;

    if (!-f $request_filename){
      set $rule_0 1$rule_0;
    }

    try_files $uri $uri/ /index.html;
  }
那么,如何将此if条件放入vhost配置中:

 if (!-f $request_filename){
       set $rule_4 1$rule_4;
     }

但是有可能吗?我试过使用
location\u cfg\u prepend
,但没有用。

请尝试在nginx中使用
LuaModule
,Lua模块有很多配置

Lua中
语法非常简单易用


请阅读

我对jfryman nginx的v0.0.9也有同样的问题

,它看起来像
location\u custom\u cfg{pre,ap}pend
,则不应添加code>

但是,模板添加了
之后,即使该行只有一个
}
导致
nginx
失败

解决:
  • 使用
    location\**custom**cfg{pre,ap}pend
    选项

  • A或B:

    A.编辑出

    B.从github获取最新版本的源代码:

  • sudorm-rf/etc/puppet/modules/nginx&&cd/etc/puppet/modules&&sudogit克隆nginx

    例子
    您现在可以使用
    raw\u prepend
    raw\u append
    参数进行此操作


    有关更多详细信息,请参见本页

    我不清楚你在问什么,但试着读一读“如果是邪恶的”这篇文章。我也有同样的问题,仍然在寻找解决办法。问题似乎在于位置\u cfg\u prepend添加了一个;在生成的配置文件中关闭if}之后。nginx似乎不喜欢这样。位置\u cfg\u append做同样的事情。@zuniga我发布了一个答案。github上的最新源代码中有一个修复程序,但它不在puppet forge中。谢谢@GuyHughes,我将尝试最新版本,但这对我在生产中不是一个足够好的解决方案,必须等待修复程序完成released@zuniga,github
    master
    分支机构应为生产质量。简单的选择是像puppet forge一样使用v0.0.9模块,并编辑
    .erb
    模板,在适当的地方删除分号。您可以在生产机器上应用更改。我通过添加#作为最后一个字符并强制添加额外字符来解决此问题;成为注释:“如果(-f$request_filename)=>”{break;}#”
      nginx::resource::location { 'sub.dom.com_root':
        ensure                                                                       => present,
        vhost                                                                        => 'sub.dom.com',
        location                                                                     => '~ \.php$',
        fastcgi                                                                      => 'unix:/var/run/php5-fpm.sock',                                                                                                                                                              
        www_root                                                                     => '/var/www/sub.dom.com',
        location_custom_cfg_append                                                   => {
          'if (-f $request_filename)'                                                => '{ break; }',
          'if (-d $request_filename)'                                              => '{ break; }',
          'if ($request_filename !~ (js|css|jpg|png|gif|robots\.txt|index\.php.*) )' => '{ rewrite ^/(.*) /index.php?$1 last; }',
        },
      }