nginx 虚拟主机

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

虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。


Nginx配置文件如下:

nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

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

    sendfile        on;
    keepalive_timeout  65;

   server_names_hash_bucket_size 128; 
   client_header_buffer_size 2k; 
   large_client_header_buffers 4 4k; 
   client_max_body_size 8m;
   
   open_file_cache max=204800 inactive=20s;
   open_file_cache_valid 30s;
   open_file_cache_min_uses 1;

    gzip  on;
    #gzip_static on;
    gzip_min_length 1024;
    gzip_proxied any;
    gzip_types text/plain application/xml application/x-javascript text/javascript text/css text/html5;   

    upstream  cc{
        server 10.151.15.103:8080;
		server 10.151.15.103:8090;
		session_sticky;
    }

    server {
        listen       80;
        server_name  10.151.15.103;
	    proxy_buffer_size 128k;
        proxy_buffers   32 128k;
        proxy_busy_buffers_size 128k;
        ssi on;
        location / {
          index  index.html index.htm index.shtml index.zhtml login.zhtml;
          proxy_pass http://cc;
          proxy_redirect    off;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Host $host;
          client_max_body_size 1000m;
       }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

		location /NginxStatus {
			stub_status on;
			access_log off;
		}
	}
}

基于IP的虚拟主机

可以在一块物理网卡上绑定多个IP地址,这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。

设置IP别名也很容易,只需配置系统上的网络接口,让它监听额外的IP地址。

[root@TA30-53 ~]# ifconfig
eth2      Link encap:Ethernet  HWaddr 00:50:56:A3:02:9B  
          inet addr:10.143.128.165  Bcast:10.143.128.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:33950932 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28189012 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14553137910 (13.5 GiB)  TX bytes:5744060219 (5.3 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:9144 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9144 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:13844061 (13.2 MiB)  TX bytes:13844061 (13.2 MiB)
该服务器有一块物理网卡设备eth2和本地回环设备lo,eth2的ip地址为10.143.128.165,本地回环lo的ip地址为127.0.0.1


本地回环代表设备的本地虚拟接口,所以默认被看作永远不会宕掉的接口,它的作用:

1.测试本机的网络配置,能ping通127.0.0.1说明本机的网卡和ip协议安装都没有问题。

2.某些SERVER/CLIENT的应用程序在运行时须调用服务器上的资源,一般都要指定SERVER的ip地址,但当该程序要在同一台机器上运行且没有别的SERVER时,就可以把SERVER的资源装在本机上,SERVER的IP地址设为127.0.0.1也同样可以运行,


在eth2网卡设备上添加两个ip别名10.143.128.166和10.143.128.167

[root@TA30-53 ~]# /sbin/ifconfig eth2:1 10.143.128.166 broadcast 10.143.128.255 netmask 255.255.255.0 up
[root@TA30-53 ~]# /sbin/route add -host 10.143.128.166 dev eth2:1
[root@TA30-53 ~]# /sbin/ifconfig eth2:2 10.143.128.167 broadcast 10.143.128.255 netmask 255.255.255.0 up  
[root@TA30-53 ~]# /sbin/route add -host 10.143.128.167 dev eth2:2 
[root@TA30-53 ~]# ifconfig
eth2      Link encap:Ethernet  HWaddr 00:50:56:A3:02:9B  
          inet addr:10.143.128.165  Bcast:10.143.128.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:33984239 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28224440 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14556744285 (13.5 GiB)  TX bytes:5754780260 (5.3 GiB)

eth2:1    Link encap:Ethernet  HWaddr 00:50:56:A3:02:9B  
          inet addr:10.143.128.166  Bcast:10.143.128.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth2:2    Link encap:Ethernet  HWaddr 00:50:56:A3:02:9B  
          inet addr:10.143.128.167  Bcast:10.143.128.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:9166 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9166 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:13857211 (13.2 MiB)  TX bytes:13857211 (13.2 MiB)
这时,从另外一台服务器ping 10.143.128.166和10.143.128.167,如果可以ping通,则证明配置无误。

但是通过ifconfig和route配置的ip别名在服务器重启后会消失。

可以将这两条命令加到/etc/rc.local文件中,让系统开机时自动运行:

[root@TA30-53 ~]# vi /etc/rc.local
在文件末尾增加以下内容,然后保存即可。

无论是通过ip别名在一台服务器上配置多个ip地址,还是通过多块网卡在服务器上配置多个ip地址,在Nginx中都能将其配置为基于ip的虚拟主机。

http {
#第一个虚拟主机
server {
	#监听的ip和端口
        listen       10.143.128.165:80;
	#主机名称
        server_name 10.143.128.165;
	#访问日志文件存放路径
	access_log logs/server1.access.log combined;
        location / {
	#默认首页文件,顺序从左到右,如果找不到index.html,则查找index.htm文件作为首页文件
  	index  index.html index.htm;
  	#HTML网页文件存放的目录
          root   html;
        }
    }
#第二个虚拟主机
server {
	#监听的ip和端口
        listen       10.143.128.166:80;
	#主机名称
        server_name 10.143.128.166;
	#访问日志文件存放路径
	access_log logs/server2.access.log combined;
        location / {
	#默认首页文件,顺序从左到右,如果找不到index.html,则查找index.htm文件作为首页文件
  	index  index.html index.htm;
 	 #HTML网页文件存放的目录
          root   html;
        }
    }
#第三个虚拟主机
server {
	#监听的ip和端口
        listen       10.143.128.167:80;
	#主机名称
        server_name 10.143.128.167;
	#访问日志文件存放路径
	access_log logs/server3.access.log combined;
        location / {
	#默认首页文件,顺序从左到右,如果找不到index.html,则查找index.htm文件作为首页文件
  	index  index.html index.htm;
 	#HTML网页文件存放的目录
          root   html;
        }
    }

server {
    listen      192.168.204.131:80;
    server_name example.org www.example.lianggzone.com;
    root /data/www;
}

server {
    listen      192.168.204.132:80;
    server_name example.net www.example.lianggzone.com;
    root /data/bbs;
}


基于域名的虚拟主机

这是最常见的一种虚拟主机,只需配置你的DNS服务器,将每个主机名映射到正确的IP地址,然后配置Nginx服务器,令其识别不同的主机名就可以了。
这种虚拟主机技术,使很多虚拟主机可以共享同一个IP地址,有效解决IP地址不足的问题。
所以 如果没有特殊要求 必须用一个基于IP的虚拟主机,那最好还是使用基于域名的虚拟主机。

先编辑hosts加入虚拟域名以便解析
127.0.0.1 www.blog.lianggzone.com www.bbs.lianggzone.com

修改nginx配置文件nginx.conf,添加虚拟域名支持
server {
    listen      80;
    server_name www.blog.lianggzone.com;
    location / {
      root   /usr/local/dev/nginx/page;
      index  index.html;
    }
}

server {
    listen      80;
    server_name www.bbs.lianggzone.com;
    location / {
      root   /usr/local/dev/nginx/page;
      index  index2.html;
    }
}

基于端口 的虚拟主机

使用端口来区分,浏览器使用域名或ip地址:端口号访问

server {
    listen 8080;
    server_name www.blog.lianggzone.com;
    root /usr/local/dev/nginx/page;
}

server {
    listen 9090;
    server_name www.bbs.lianggzone.com;
    root /usr/local/dev/nginx/page;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值