Nginx虚拟主机配置

Nginx的虚拟主机配置, 是通过”server”这个directive来进行了:

//========= 第一个虚拟主机

server {

listen 80;
server_name www.100.com;
root /usr/local/vhosts/100;

location / {
index index.php index.html index.shtml;
}

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/local/vhosts/100$fastcgi_script_name;
include        fastcgi_params;
}

#log…
}

//========== 第二个虚拟主机

server {

listen 80;
server_name www.101.com;
root /usr/local/vhosts/101

location / {
index index.php index.html index.shtml;
}

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/local/vhosts/101$fastcgi_script_name;
include        fastcgi_params;
}

#log…

}

//========== 第二个虚拟主机

server {

listen 80 default;
server_name www.102.com;
root /usr/local/vhosts/102;

location / {
index index.php index.html index.shtml;
}

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/local/vhosts/102$fastcgi_script_name;
include        fastcgi_params;
}

#log…

}

上面配置基本完成,下面我们需要重启nginx服务才可以生效的,重启方法如下:
1.显示nginx进行id
#ps -aux | grep nginx

2.结果nginx的master进行pid
#kill -HUP 635

3.重启ngnix
#nginx

经过上面的配置,基本就可以看到我们的配置效果已经起作用了,注意上面的
astcgi_param  SCRIPT_FILENAME  /usr/local/vhosts/100$fastcgi_script_name;
粗体字一定要与上面的站点目录一样,否则就提示No input file specified错误.

有关nginx重启命令的详细介绍,请参考:http://blog.haohtml.com/index.php/archives/1305

上述配置中, 定义了三个虚拟主机。前两个Server,通过域名“www.100.com”和“www.101.com”可以分别访问正确的网站。如果浏览器直接通过IP地址或者其他指向这台机器的域名访问, 那么访问到的是第三个server配置。第三个server为一个默认配置, 请注意,它没有“server_name”指令, 并且“listen”指令包含一个“default”关键字。

这种办法当虚拟主机比较多的时候就显着特别的麻烦了,维护起来也是一个大问题,我们可以用include指令实现把每个主机的配置单独写到了个配置文件里,只需要在nginx.conf里用include指令包含过来就可以了.实现办法参考:用include指令实现nginx多虚拟主机配置

安全:解决Nginx文件类型错误解析漏洞的方法

对于使用nginx做为web服务的请注意对于多个server_name引起的问题及解决办法. 点击查看

One thought on “Nginx虚拟主机配置

  1. Pingback: [教程]CentOS5.5平台安装lemp | haohtml's blog

Leave a Reply