一、基于域名的虚拟服务器

nginx首先确定使用哪一个server域来处理请求,下面的例子中有3个虚拟服务器监听*:80端口。


server {
listen 80;
server_name nginx.org www.nginx.org;
...
}
 
server {
listen 80;
server_name nginx.net www.nginx.net;
...
}
 
server {
listen 80;
server_name nginx.com www.nginx.com;
...

}

在上面的配置中,nignx会根据HTTP请求“Host”的值,确定具体哪一个server接收web请求。如果“Host”不存在或者Host的值无法匹配任何sever中的$server_name,nginx就会把web请求送到默认的server中。如果没有定义default_server,默认将 请求传递给第一个server。

默认server的配置方法如下:

server {
    listen       80  default_server;
    server_name  nginx.net  www.nginx.net;
    ...

}

二、处理基于IP和域名的虚拟主机

server {
    listen       192.168.1.1:80;
    server_name  nginx.org  www.nginx.org;
    ...
}
 
server {
    listen       192.168.1.1:80;
    server_name  nginx.net  www.nginx.net;
    ...
}
 
server {
    listen       192.168.1.2:80;
    server_name  nginx.com  www.nginx.com;
    ...
}

上面的配置中,nginx首先匹配IP地址和端口,然后在确定响应IP下的server_name,如果没有找到任何匹配的 server_name,ngixn将请求传递给默认server。例如,当nginx收到来自 192.168.1.1:80 端口的请求www.nginx.com(无法匹配192.168.1.1下的任何一个server_name),上例中没有定义默server,那么这个请求将被传递到第一个server中。

默认server的配置方法如下:

备注:nginx可以为不同的IP地址和端口定义多个默认server

eg:

server {
    listen        192.168.1.1:80;
    server_name   nginx.org  www.nginx.org;
    ...
}
 
server {
    listen        192.168.1.1:80  default_server;
    server_name   nginx.net  www.nginx.net;
    ...
}
 
server {
    listen        192.168.1.2:80  default_server;
    server_name   nginx.com  www.nginx.com;
    ...

}

三、如何处理PHP请求

待补充。。。。。