nginx之虚拟主机配置

什么是虚拟主机?
虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供web服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响。
nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置。
1、基于域名的虚拟主机 (server_name来区分虚拟主机——应用:外部网站)
2、基于ip的虚拟主机, (一块主机绑定多个ip地址)
3、基于端口的虚拟主机 (端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台)

1、 基于域名的虚拟主机

1、配置通过域名区分的虚拟机
[root@localhost ~]# vim /etc/nginx/nginx.conf
worker_processes 4;

error_log logs/error.log;

worker_rlimit_nofile 102400;

events {
worker_connections 1024;
}

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

server {
    listen       80;
    server_name  web.testpm.com;
    location / {
        root   /var/www/nginx/;
        index  index.html index.htm;
        limit_rate  2k;
        }
    }

server {
    listen       80;
    server_name  web.bella.com;
    location / {
        root   /bella/html;
        index  index.html index.htm;
        }
    }

}

[root@localhost nginx]# cat /var/www/nginx/index.html
hello

[root@localhost nginx]# cat /bella/html/index.html
bella
2、重新加载配置文件

如果编译安装的执行

[root@nginx]# /usr/local/nginx/sbin/nginx -s reload

如果 yum 安装的执行

[root@nginx]# nginx -s reload
3、客户端配置解析
在 C:\Windows\System32\drivers\etc\hosts 文件中添加两行(linux:/etc/hosts)
10.0.105.199 web.testpm.com
10.0.105.199 web.bella.com
然后我们就可以在浏览器访问了
浏览器输入:http://web.testpm.com/
浏览器输入:http://web.1000phone.com/
2、 基于ip的虚拟主机
[root@localhost ~]# ip a
[root@localhost ~]# ifconfig ens33:1 10.0.105.201/24
[root@localhost ~]# ifconfig
ens33: flags=4163 mtu 1500
inet 10.0.105.199 netmask 255.255.255.0 broadcast 10.0.105.255
inet6 fe80::9d26:f3f0:db9c:c9be prefixlen 64 scopeid 0x20
ether 00:0c:29:17:f1:af txqueuelen 1000 (Ethernet)
RX packets 9844 bytes 1052722 (1.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5567 bytes 886269 (865.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens33:1: flags=4163 mtu 1500
inet 10.0.105.201 netmask 255.255.255.0 broadcast 10.0.105.255
ether 00:0c:29:17:f1:af txqueuelen 1000 (Ethernet)

2、配置通过ip区分的虚拟机
[root@localhost ~]# cat /etc/nginx/nginx.conf
user root;
worker_processes 4;

error_log logs/error.log;

worker_rlimit_nofile 102400;

events {
worker_connections 1024;
}

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"';

server {
    listen       80;
    server_name  10.0.105.199;
    location / {
        root   /var/www/nginx/;
        index  index.html index.htm;
        limit_rate  2k;
    }
    
 server {
    listen       80;
    server_name  10.0.105.201;
    location / {
        root   /bella/html/;
        index  index.html index.htm;
        }
    }

}
3、重新加载配置文件
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
4、 测试访问
浏览器输入:http://10.0.105.199
浏览器输入:http://10.0.105.201
5、补充
-- 删除绑定的临时ip
[root@localhost ~]# ifconfig ens33:1 10.0.105.201/24 down
重启一下nginx
[root@localhost ~]# systemctl restart nginx
3、 基于端口的虚拟主机
[root@localhost ~]# cat /etc/nginx/nginx.conf
user root;
worker_processes 4;

worker_rlimit_nofile 102400;

events {
worker_connections 1024;
}

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"';

sendfile        on;
keepalive_timeout  65;
server {
    listen       80;
    server_name  web.testpm.com;
    location / {
        root   /var/www/nginx/;
        index  index.html index.htm;
        limit_rate  2k;
    }
    
 server {
    listen       8080;
    server_name  web.testpm.com;
    location / {
        root   /bella/html/;
        index  index.html index.htm;
        }
    }

}
重新加载配置文件:
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
测试访问:
浏览器输入:http://web.testpm.com/
浏览器输入:http://web.bella.com:8080

你可能感兴趣的:(nginx之虚拟主机配置)