If statement 将if-else与Puppet nginx jfryman模块一起放入nginx Vhost配置中
我想为一个有一些if条件语句的网站自动化nginx vhost配置。我试图用puppet forge模块来实现,但无法配置文件。我想要的配置如下所示: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
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,githubmaster
分支机构应为生产质量。简单的选择是像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; }',
},
}