虚拟主机使用的是特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台 “虚拟” 的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完成的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:WindowsSystem32driversetc)
文件,在文件未添加IP
域名(举例:192.168.88.130 virtual.test.com
)
2)、在nginx
根目录下创建root
所配置的文件夹virtual.test/html
(全路径展示:/usr/install/nginx/virtual.test/html
)
3)、在此目录下创建index.html
文件即可。
虚拟主机测试页面-index
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地址的虚拟主机需要添加网络接口 使用不广泛。
到此这篇关于Nginx配置虚拟主机的三种方法的文章就介绍到这了,更多相关Nginx配置虚拟主机内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!