Nginx 配置虚拟主机,多网站

Vps 上安装了 nginx。用多个子域名,每个子域名到不同的目录。

http {  
    server {  
        listen 80;  
        server_name a.9958.pw;  
        access_log logs/a.access.log main;  

        server_name_in_redirect off;  

        location / {  
                index index.html;  
                root /home/www/host_a/;  
        }  
    }  

    server {  
        listen 80;  
        server_name b.9958.pw;  
        access_log logs/b.access.log main;  

        server_name_in_redirect off;  

        location / {  
                index index.html;  
                root /home/www/host_b/;  
        }  
    }  
}  

结果发现用 b.9958.pw 还是指到 host_a 目录。后来看了官方示例:http://wiki.nginx.org/NginxVirtualHostExample,提到有个 default 的匹配,如:

http {  
  server {  
    listen          80 default;  
    server_name     _;  
    access_log      logs/default.access.log main;  

    server_name_in_redirect  off;  

    location / {  
      index index.html;  
      root  /var/www/default/htdocs;  
    }  
  }  
}  

加上这个 default 就可使 a.9958.pw 和 b.9958.pw 正常工作了。