欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

nginx配置基于域名、端口、IP的虚拟主机

程序员文章站 2022-08-21 11:07:09
1、基于域名的虚拟主机: 绝大多数企业对外提供服务的网站使用的都是基于域名的主机,通过不同的域名区分不同的虚拟主机。 首先我们进入安装nginxd的目录下:/application/nginx-1.6.3/conf 我们去除掉默认配置文件里的注释和空行并重定向到nginx.conf文件里,同时我们需 ......

1、基于域名的虚拟主机:

  绝大多数企业对外提供服务的网站使用的都是基于域名的主机,通过不同的域名区分不同的虚拟主机。

首先我们进入安装nginxd的目录下:/application/nginx-1.6.3/conf

我们去除掉默认配置文件里的注释和空行并重定向到nginx.conf文件里,同时我们需要配置如下:

egrep -v "#|^$" nginx.conf.default >nginx.conf   //去掉包含#号和空行的内容

[root@lamp01 conf]# vim nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  www.jyw1.com;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
     server {
        listen       80;
        server_name  bbs.jyw2.com;
        location / {
            root   html/bbs;
            index  index.html index.htm;
         }
     }
}

创建站点目录文件:

mkdir ../html/{www,bbs} -p  

[root@lamp01 conf]# tree ../html/
../html/
├── 50x.html
├── bbs
│   └── index.html
├── index.html
└── www
     └── index.html

 为站点目录生成首页并追加内容:

nginx配置基于域名、端口、IP的虚拟主机

 通过hosts来做dns解析

nginx配置基于域名、端口、IP的虚拟主机

[root@lamp01 conf]# echo "www.jyw1.com" >../html/www/index.html 
[root@lamp01 conf]# echo "bbs.jyw2.com" >../html/bbs/index.html 
[root@lamp01 conf]# cat ../html/{www,bbs}/index.html 
www.jyw1.com
bbs.jyw2.com
[root@lamp01 conf]# /application/nginx/sbin/nginx -t  #检查语法
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
[root@lamp01 conf]# /application/nginx/sbin/nginx -s reload  #刷新配置
[root@lamp01 conf]# vi /etc/hosts
[root@lamp01 conf]# ping www.jyw1.com
ping www.jyw1.com (192.168.43.118) 56(84) bytes of data.
64 bytes from www.jyw1.com (192.168.43.118): icmp_seq=1 ttl=64 time=0.022 ms
64 bytes from www.jyw1.com (192.168.43.118): icmp_seq=2 ttl=64 time=0.020 ms
^c
--- www.jyw1.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1280ms
rtt min/avg/max/mdev = 0.020/0.021/0.022/0.001 ms
[root@lamp01 conf]# ping bbs.jyw2.com
ping bbs.jyw2.com (192.168.43.118) 56(84) bytes of data.
64 bytes from www.jyw1.com (192.168.43.118): icmp_seq=1 ttl=64 time=0.015 ms
64 bytes from www.jyw1.com (192.168.43.118): icmp_seq=2 ttl=64 time=0.020 ms
^c
--- bbs.jyw2.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1311ms
rtt min/avg/max/mdev = 0.015/0.017/0.020/0.004 ms
[root@lamp01 conf]# curl www.jyw1.com
www.jyw1.com
[root@lamp01 conf]# curl bbs.jyw2.com
bbs.jyw2.com
[root@lamp01 conf]# 

我是用的windows系统,配置一下host在“c:\windows\system32\drivers\etc”下的hosts中配置一下域名重定向

192.168.43.118 www.jyw1.com bbs.jyw2.com

 然后cmd再ping一下这个域名是否正确指向了这个ip上

nginx配置基于域名、端口、IP的虚拟主机

打开浏览器,输入www.test.com会得到以下结果,就说明外网访问成功

nginx配置基于域名、端口、IP的虚拟主机

ok,通过多域名来访问站点,同样也可以一个站点多个域名。

2.基于端口的虚拟主机配置:

  此类型的虚拟主机主要应用于企业内部的网站,需要加端口号才能访问,通过不同的端口来区分不同的虚拟主机,为企业网站安全优化,例如:企业的网站后台,资料共享等。

 在前面配置的基于域名的虚拟主机的基础上只需要修改nginx.conf文件,刷新配置即可完成:

修改nginx.conf配置文件

[root@lamp01 conf]# vim nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       8001;
        server_name  www.jyw1.com;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
     server {
        listen       8002;
        server_name  bbs.jyw2.com;
        location / {
            root   html/bbs;
            index  index.html index.htm;
         }
     }
}

刷新配置,测试结果如下

[root@lamp01 conf]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
[root@lamp01 conf]# /application/nginx/sbin/nginx -s reload
[root@lamp01 conf]# curl www.jyw1.com
curl: (7) couldn't connect to host
[root@lamp01 conf]# curl www.jyw1.com:8001
www.jyw1.com
[root@lamp01 conf]# curl bbs.jyw2.com:8002
bbs.jyw2.com
[root@lamp01 conf]# 

在windows下测试如下:

nginx配置基于域名、端口、IP的虚拟主机

ok,既可以对应多个站点,多个端口访问,也可以对应一个站点多个端口访问。

3.基于ip地址虚拟主机:

  通过不同的ip区分不同的虚拟主机,此类型企业应用于比较少,通常用到不通业务流中或者负载均衡上面。

 在前面配置的基于域名的虚拟主机的基础上只需要修改nginx.conf文件,刷新配置即可完成:

修改nginx.conf配置文件

[root@lamp01 conf]# vim nginx.conf

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.43.118:80;
        server_name  www.jyw1.com;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
     server {
        listen 192.168.43.88:80;
        server_name  bbs.jyw2.com;
        location / {
            root   html/bbs;
            index  index.html index.htm;
         }
     }
}

修改完配置文件后,我们需要虚拟一块网卡:

ip addr add  //添加

ip addr del 192.168.43.88/24  dev eth0  //删除

临时性网卡: ip addr add 192.168.43.88/24 label eth0:1 dev eth0  或者  ifconfig eth0:1 192.168.43.88/24 up 

[root@lamp01 conf]# ip addr add 192.168.43.88/24 label eth0:1 dev eth0  添加网卡(推荐使用ip addr)
[root@lamp01 conf]# ifconfig
eth0      link encap:ethernet  hwaddr 00:0c:29:01:4d:22  
          inet addr:192.168.43.118  bcast:192.168.43.255  mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe01:4d22/64 scope:link
          up broadcast running multicast  mtu:1500  metric:1
          rx packets:1100 errors:0 dropped:0 overruns:0 frame:0
          tx packets:664 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          rx bytes:94218 (92.0 kib)  tx bytes:76354 (74.5 kib)

eth0:1    link encap:ethernet  hwaddr 00:0c:29:01:4d:22  
          inet addr:192.168.43.88  bcast:192.168.43.255  mask:255.255.255.0
          up broadcast running multicast  mtu:1500  metric:1
[root@lamp01 conf]# ip addr del 192.168.43.99/24 dev eth0   删除网卡
[root@lamp01 conf]# ifconfig
eth0      link encap:ethernet  hwaddr 00:0c:29:01:4d:22  
          inet addr:192.168.43.118  bcast:192.168.43.255  mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe01:4d22/64 scope:link
          up broadcast running multicast  mtu:1500  metric:1
          rx packets:1218 errors:0 dropped:0 overruns:0 frame:0
          tx packets:724 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          rx bytes:103486 (101.0 kib)  tx bytes:83366 (81.4 kib)
[root@lamp01 conf]# 

永久性网卡:

cd /etc/sysconfig/network-scripts/    //进入到网卡配置文件的目录

cp ifcfg-eth0 ifcfg-eth0:1               //拷贝配置文件并重命名

vim ifcfg-eth0:1                           //编辑配置文件

/etc/init.d/network restart           //重启网络服务

图略....

下面我们刷新配置,查看效果:

[root@lamp01 ~]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
[root@lamp01 ~]# /application/nginx/sbin/nginx -s reload
[root@lamp01 ~]# curl 192.168.43.88
bbs.jyw2.com
[root@lamp01 ~]# curl 192.168.43.118
www.jyw1.com
[root@lamp01 ~]# 

 在windows下测试如下:

nginx配置基于域名、端口、IP的虚拟主机

 

ok,既可以多个ip对应一个站点,也可以对应多个站点访问。