nginx: [emerg] unknown directive "if($host" in

回复 星标
更多

nginx: [emerg] unknown directive "if($host" in


Nginx接触也有一段时间,但用的过程中都只是一些简单的配置,基本上都是百度后照葫芦画瓢。昨天在写301重定向时就遇到了一个很郁闷的问题。

我参考我所下载的Nginx手册中的Nginx Redirect所介绍的域名全跳转的方法,上面的写法如下(只做了域名的修改):

server {
	listen	80;
	server_name xiaoboy.com 
	root	/home/web;
	if($host !~ "www\.btfilm\.cn$") {
		rewrite ^(.*)  ermanent;
	}
}

然后service nginx reload,Nginx就报出如下的错误:

nginx: [emerg] unknown directive "if($host" in...

对照手册看了很久,真的没有写错,可为什么报错?百度搜索了一会,终于找到原因了,原来Nginx对语法的格式还是比较严格的,"if($host"之间需要空格隔开("if ( $host",后面的也一样),所以正确的写法应该是(注意代码第5行空格的变化):

server {
	listen	80;
	server_name xiaoboy.com 
	root	/home/web;
	if ( $host !~ "www\.xiaoboy\.com$" ) {
		rewrite ^(.*)  ermanent;
	}
}

最后service nginx reload一切正常。

2016-12-29 00:13:56更新过
新窗口打开 关闭