Nginx 虚拟主机
优质博文 IT-BLOG-CN
虚拟主机使用的是特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台 “虚拟” 的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完成的Intemet
服务器功能(WWW
、FTP
、Email
等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者的角度来看,每一台虚拟主机和一台独立的主机完全一样。
利用虚拟主机,可以在同一台服务器,同一组Nginx
进程上运行多个网站的功能。不用为每个要运行的网站提供一台单独的Nginx
服务器或单独的一组Nginx
进程。
虚拟主机的配置主要有以下三种:
一、基于域名的虚拟主机
进入conf/nginx.conf
配置文件中添加server
属性,示例如下:一个域名对应一个ip
地址,一个ip
地址可以被多个域名绑定。域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。
server {
#检测默认的80端口
listen 80;
#我们测试的是域名映射,所以这个配置是重点,也是外部访问的地址
server_name virtual.test.com;
#如果配置的默认/,则访问项目时,输入虚拟域名即可
location / {
#默认访问的是nginx根目录下的virtual.test/html目录中的index.html
root virtual.test/html;
index index.html;
}
}
测试前准备:
1)、添加本地域名映射,修改HOSTS(C:\Windows\System32\drivers\etc)
文件,在文件未添加IP
域名(举例:192.168.88.130 virtual.test.com
)
2)、在nginx
根目录下创建root
所配置的文件夹virtual.test/html
(全路径展示:/usr/install/nginx/virtual.test/html
)
3)、在此目录下创建index.html
文件即可。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>虚拟主机测试页面-index</h2>
</body>
</html>
4)、访问http://virtual.test.com/
二、基于端口的虚拟主机
只需将server
中的listen
属性设置为目标端口即可:
server {
#主要配置属性
listen 8089;
server_name virtual.test.com;
location / {
root virtual.test/html;
index index.html;
}
}
通过http://virtual.test.com:8089/
也可以访问目标文件:
三、基于IP的虚拟主机
将server_name
修改为虚拟机的IP
地址即可:
server {
listen 8089;
#修改为虚拟机的IP地址
server_name 192.168.88.130;
location / {
root html;
index index.html index.htm;
}
}
通过IP
地址访问目标项目测试如下:
四、Nginx代理
根据项目名称,将请求发送给对应的服务器,匹配规则如下:
【1】=
严格匹配:如果这个查询匹配,那么将停止搜索并立即处理此请求;
【2】~
为区分大小写匹配(可用正则表达式);
【3】!~
为区分大小写不匹配
【4】~*
为不区分大小写匹配(可用正则表达式)
【5】!~*
为不区分大小写不匹配
【6】^~
如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。
示例:
server {
listen 9001;
server_name localhost;
location ~ /edu/ {
proxy_pass http://localhost:8101;
}
location ~ /oss/ {
proxy_pass http://localhost:8102;
}
}
总结:在 Nginx下配置虚拟主机 vhost 非常方便。主要在 Nginx 的配置文件 nginx.conf 中添加一个 server 即可。使用基于域名的虚拟主机配置是比较流行的方式,可以在同一个IP上配置多个域名并且都通过80端口访问。由于基于IP地址的虚拟主机需要添加网络接口 使用不广泛。