Nginx 配置虚拟主机及设置多个虚拟主机

nginx可以使用server块来设置多个虚拟主机,在server段中用server_name和listen指令来绑定域名和端口。例如:

 代码如下 复制代码

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

 location / {
  root  netingcn_com;
  index index.html;
 }
}

server {
 listen          80;
 server_name     www.netingcn.net;

 location / {
  root  netingcn_net;
  index index.html;
 }
}

上述配置就是指定了两个虚拟主机,分别是www.netingcn.com和www.netingcn.net。可能在某些nginx的版本中上述的配置并不能很好的工作,出现的情况是所有的请求都是由第一个server处理的。

造成这个的原因是没有配置一个”Catch All”的缺省server,所谓缺省即是把不匹配配置指定的虚拟主机的请求都交给缺省server来处理。缺省server的配置如下:

 代码如下 复制代码

server {
 listen 80 default_server;
 server_name _; # This is just an invalid value which will never trigger on a real hostname.
 access_log logs/default.access.log main;

 server_name_in_redirect off;

 root  /var/www/default/htdocs;
}

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

如:

 代码如下 复制代码

http {  
    server {  
        listen 80;  
       server_name a.chenlb.com;  
       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.chenlb.com;  
       access_log logs/b.access.log main;  
 
        server_name_in_redirect off;  
 
        location / {  
                index index.html;  
               root /home/www/host_b/;  
        }  
    }  

http {
    server {
        listen 80;
        server_name a.chenlb.com;
        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.chenlb.com;
        access_log logs/b.access.log main;

        server_name_in_redirect off;

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

结果发现用 b.chenlb.com 还是指到 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;   
   }   
}  
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.chenlb.com 和 b.chenlb.com 正常工作了。

时间: 2024-10-24 19:18:42

Nginx 配置虚拟主机及设置多个虚拟主机的相关文章

Nginx配置虚拟主机教程详解

nginx可以使用server块来设置多个虚拟主机,在server段中用server_name和listen指令来绑定域名和端口.例如:  代码如下 复制代码 server {  listen          80;  server_name    www.111cn.net;  location / {   root  hzhuti;   index index.html;  } } 上述配置就是指定了一个虚拟主机www.111cn.net.可能在某些nginx的版本中上述的配置并不能很好的

弄了两天了!! Ubutun 下nginx配置虚拟主机问题

问题描述 弄了两天了!! Ubutun 下nginx配置虚拟主机问题 1.下两图是sites-available/default 的配置 2.执行nginx-t命令后出现的错误 3.这是配置的虚拟主机根目录 现在问题来了,在浏览器中输入localhost可以正常显示nginx欢迎界面,但输入localhost/info.php无法显示页面,有没有哪位大神给我指点一二,感激不尽!!! 解决方案 80端口侦听需要root权限,所以需要sudo执行nginx进程. 其次要看一下你的conf配置文件好像

Nginx配置虚拟主机及对PHP的支持

在conf目录下面创建vhosts目录,并创建站点的配置文件,这里以examples.com.conf为例.  代码如下 复制代码 [root@localhost ~]# cd /usr/local/nginx/ [root@localhost nginx]# mkdir -p conf/vhosts [root@localhost nginx]# vim conf/vhosts/examples.com.conf 创建的examples.com.conf配置文件如下:  代码如下 复制代码 #

lnmp环境nginx 配置多虚拟主机例子

1.首先进入 /usr/local/nginx/conf/ 目录(自己nginx安装的路径) ,刚编译好的nginx 在这个目录下是木有 vhost 目录的,创建好这个目录后,打开nginx.conf 文件,在 http 范围内添加 include vhost/*.conf,包含创建的虚拟主机配置文件,然后保存,创建虚拟目录共用的server文件,就是每个conf都会使用到的配置项,我们把他独立成一个模块供大家使用. server.conf文件: location ~ .*\.(php|php5

Windows下Nginx的启动、停止等命令&Nginx 配置多域名&windows下设置Nginx开机自动启动

Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍. 1.启动: C:\server\nginx-1.0.2>start nginx 或 C:\server\nginx-1.0.2>nginx.exe 注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作. 2.停止: C:\server\nginx-1.0.2>ngin

Apache下服务器虚拟主机的设置方法介绍

一.WWW服务器虚拟主机原理 WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器.比如由一台机器同时提供http://www.company1.com, http://www.company2.com 等的WWW服务,而浏览这些WWW站点的用户感觉不到这种方式下跟由不同的机器提供不同的服务有什么差别. 使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度.另外,对于个人用户,也可以使用这种虚拟主机方式

设置 Ubuntu Server 虚拟主机方法详解

之前设置ubuntu的虚拟主机完全看心情,今天来看下官方的建议.  代码如下 复制代码 1.COPY THE DEFAULT CONFIG SAMPLE IN FOLDER sites-available sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite 2.EDIT YOUR CONFIG FILE mynewsite 3.ENABLE YOUR VIRTUALHOST CON

nginx配置phpmyadmin虚拟目录的问题

问题描述 nginx配置phpmyadmin虚拟目录的问题 server {listen 80; server_name ceshi3.com; #charset koi8-r; #access_log logs/host.access.log main; Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { root /www/html/c

nginx中的limit_req限速设置配置示例_nginx

WIKI: http://wiki.nginx.org/HttpLimitReqModule 漏桶原理(leaky bucket): http://en.wikipedia.org/wiki/Leaky_bucket 实例: #以用户二进制IP地址,定义三个漏桶,滴落速率1-3req/sec,桶空间1m,1M能保持大约16000个(IP)状态 limit_req_zone $binary_remote_addr zone=qps1:1m rate=1r/s; limit_req_zone $bi