Nginx(二):虚拟主机配置

什么是虚拟主机?

虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。

利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。

Nginx和Apache一样支持配置基于IP的虚拟主机,基于域名的虚拟主机,基于端口的虚拟主机这三种。

配置基于IP的虚拟主机

在Nginx配置文件(nginx.conf)中,分别对10.0.0.133、10.0.0.189、10.0.0.190三个IP配置三个纯静态HTML支持的虚拟主机。

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    #第一个虚拟主机
    server {
        listen       10.0.0.133:80;               #监听的IP和端口
        server_name  10.0.0.133;              #主机名称

        access_log  logs/host1.access.log  main;                #访问日志文件存放路径

        location /
        {
            root /usr/local/nginx/html/host1;              #HTML网页文件存放的目录
            index  index.html index.htm;                    #默认首页文件,顺序从左到右,如果找不到index.html文件,则查找index.htm文件作为首页文件
        }
}
    #第二个虚拟主机
    server {
        listen       10.0.0.189:80;
        server_name  10.0.0.189;

        access_log  logs/host2.access.log  main;

        location /
        {
            root /usr/local/nginx/html/host2;
            index  index.html index.htm;
        }
}
    #第三个虚拟主机
    server {
        listen       10.0.0.190:80;
        server_name  10.0.0.190;

        access_log  logs/host3.access.log  main;

        location /
        {
            root /usr/local/nginx/html/host3;
            index  index.html index.htm;
        }
}

配置基于域名的虚拟主机

其实基于域名和基于ip的虚拟主机配置是差不多的,在配置基于ip的虚拟主机上我们只需要修改几个地方就能变成基于域名的虚拟主机,一个是要修改域名,一个是host文件

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.3.121:80;
        server_name  www.bp1.com;   #修改这里
        location / {
            root   html;
            index  index.html index.htm index.php;
        }
        error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    server{
        listen 192.168.3.123:80;
        server_name www.bp3.com;       #修改这里
        access_log logs/bp2.access.log combined;
        location /
        {
            index index.html index.php;
            root html/bp2;
        }
        location ~ \.php$ {
            root           html/bp2;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

    }
    server{
        listen 192.168.3.125:80;
        server_name www.bp2.com;        #修改这里
        location /{
            root html/bp3;
            index index.html index.php;
        }
        location ~ \.php$ {
            root           html/bp3;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
#include    /opt/nginx/conf/vhosts/www.domain2.com.conf;      #这一句是包含另一个nginx虚拟机主机的配置文件,其内容类似于上面最后一个server里面的内容,去掉注释后其功能相当于新增一台虚拟主机
}

配置基于端口虚拟主机

如一台服务器只有一个IP或需要通过不同的端口访问不同的虚拟主机,可以使用基于端口的虚拟主机配置。

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    #第一个虚拟主机
    server {
        listen       8111;               #监听的IP和端口
        server_name  localhost;              #主机名称

        access_log  logs/host1.access.log  main;                #访问日志文件存放路径

        location /
        {
            root /usr/local/nginx/html/host1;              #HTML网页文件存放的目录
            index  index.html index.htm;                    #默认首页文件,顺序从左到右,如果找不到index.html文件,则查找index.htm文件作为首页文件
        }
}
    #第二个虚拟主机
    server {
        listen       8112;
        server_name  localhost;

        access_log  logs/host2.access.log  main;

        location /
        {
            root /usr/local/nginx/html/host2;
            index  index.html index.htm;
        }
}
    #第三个虚拟主机
    server {
        listen       8113;
        server_name  localhost;

        access_log  logs/host3.access.log  main;

        location /
        {
            root /usr/local/nginx/html/host3;
            index  index.html index.htm;
        }
}

 

posted @ 2018-11-12 22:09  夏威夷8080  阅读(327)  评论(0编辑  收藏  举报