nginx虚拟主机配置--备忘

关于nginx虚拟主机的配置说明,网上有很多文章了。这里主要内容也差不多,只是自己在配置过程中的一些经历记录一下。

配置很简单

server{
	listen 80;
	server_name test.com www.test.com;

	#根目录及默认文档
	root /media/bak/sitesTamplate/php/iwebsns;
	index index.html index.htm index.php;

	location / {
		try_files $uri $uri/ /index.html;
	}

	#php解析
	location ~ \.php {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		include fastcgi_params;
	}
}

下面是配置fcgi参数的文件 包含了php path_info

fastcgi_split_path_info ^((?U).+\.php)(/.+)$;
#检测解析到的php文件是否存在,修复nginx文件解析漏洞
if ( !-e $document_root$fastcgi_script_name){
	return 404;
}
fastcgi_param	SCRIPT_FILENAME		$document_root$fastcgi_script_name;
fastcgi_param	PATH_INFO		$fastcgi_path_info;
fastcgi_param	PATH_TRANSLATED		$document_root$fastcgi_path_info;

fastcgi_param	QUERY_STRING		$query_string;
fastcgi_param	REQUEST_METHOD		$request_method;
fastcgi_param	CONTENT_TYPE		$content_type;
fastcgi_param	CONTENT_LENGTH		$content_length;

#fastcgi_param	SCRIPT_FILENAME		$request_filename;
fastcgi_param	SCRIPT_NAME		$fastcgi_script_name;
fastcgi_param	REQUEST_URI		$request_uri;
fastcgi_param	DOCUMENT_URI		$document_uri;
fastcgi_param	DOCUMENT_ROOT		$document_root;
fastcgi_param	SERVER_PROTOCOL		$server_protocol;

fastcgi_param	GATEWAY_INTERFACE	CGI/1.1;
fastcgi_param	SERVER_SOFTWARE		nginx/$nginx_version;

fastcgi_param	REMOTE_ADDR		$remote_addr;
fastcgi_param	REMOTE_PORT		$remote_port;
fastcgi_param	SERVER_ADDR		$server_addr;
fastcgi_param	SERVER_PORT		$server_port;
fastcgi_param	SERVER_NAME		$server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param	REDIRECT_STATUS		200;

修改nginx配置参数后,使用nginx -t检查配置.

提示successfull后就可以使用 nginx -s reload来重新加载配置

我配置的过程中遇到这样的问题,就是绑定了主机名后,重新加载配置时会出现警告

 

nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
意思是重复绑定了server name,但这个警告不会影响到服务器运行。而且,这个重复绑定的意思是现在运行的nginx服务和将要加载的新配置中的重复,所以,这个警告其实是不必的。

 

还有在我给第一个主机设定了default_server的时候,重新加载配置就会出错了,最初就是这个原因让我误以为nginx不能在同一ip端口绑定多个域名。

但其实是可以的。我的解决办法是杀掉nginx进程重新启动,或者先去掉default_server设定,重新加载nginx配置后,再加上,再重新配置。

呵呵,是不是麻烦了点,不知道高手们是怎么解决的。

附nginx本机hosts映射

127.0.0.1    test.com
127.0.0.1    www.test.com

和win下面一样,文件路径在/etc/hosts