Nginx虚拟主机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx虚拟主机相关的知识,希望对你有一定的参考价值。

虚拟主机定义:

虚拟主机指的是在单一机器上运行多个网站
虚拟主机可以是基于IP的,即每个IP一个站点;或者是基于域名的,即每个域名一个站点
这些站点在同一物理服务器上,对用户不会有任何的感知

nginx也可以配置多种类型的虚拟主机:

1.基于IP的虚拟主机
2.基于端口的虚拟主机
3.基于域名的虚拟主机

下面将分别介绍这些虚拟主机的配置,及优缺点

基于IP的虚拟主机

可以在一块物理网卡上绑定多个IP地址,这是实现基于IP虚拟主机的前提
缺点:
配置复杂,不但要关注Nginx本身的配置,同时也要关注网卡的特殊配置
访问的时候需要使用IP地址:端口(默认80不需要写)去访问,实际上也很复杂

基于端口的虚拟主机

使用端口来区分,浏览器使用域名或IP地址:端口号访问
实例配置:

server {
   listen 8080;
     server_name www.maiyap.com;
     root /data/wwwhtml/www.maiyap.com;
}
server{
   listen 9090;
     server_name www.maiyalog.com;
     root /data/wwwhtml/www.maiyalog.com;
}

缺点:
虚拟主机使用端口去做区分,导致HTTP协议不标准(标准的HTTP协议为80端口),有可能导致端口冲突,影响Nginx正常运行
业务调用必须要知道业务开启的端口,端口一旦发生改变调用方和被调用方都与要进行调整

基于域名的虚拟主机是最常见的一种虚拟主机

只需要配置DNS服务器,将每个主机名映射到正确的IP地址,然后配置Nginx服务器,令其识别不同的主机名就可以了
这种虚拟技术使用多虚拟主机可以共享同一个IP地址,有效的解决了IP地址不足的问题
实例配置:

server {
   listen 80;
     server_name www.maiyap.com;
     root /data/wwwhtml/www.maiyap.com;
}
server{
   listen 80;
     server_name www.maiyalog.com;
     root /data/wwwhtml/www.maiyalog.com;
}

优点:
所有虚拟主机使用用一个端口,弥补了基于端口虚拟主机的缺陷
所有虚拟主机使用同一个IP地址,弥补了基于IP虚拟主机的缺陷

默认虚拟主机
默认虚拟主机就是配置文件里的第一个虚拟主机.就是如果解析到这台机器的域名,不管是什么域名,只要配置文件中没有配置,就会访问到默认主机上
在Nginx中若不指定默认虚拟主机,同样配置文件中的第一个虚拟主机将会是默认虚拟主机.
实例配置:

server{
         listen 80 default_server;  #说明是默认虚拟主机
                 server_name _;               #虚拟主机没有域名,为空
                 root   /data/wwwhml/default;
                 access_log /data/wwwhtml/logs/default-access_log main;
         error_log /data/wwwhtml/logs/default-error_log;
               rewrite ^/(.*) http://maiyap.com/$1 permanent;         #将所有的未知请求,都导流到maiyap.com服务上
}

以上是关于Nginx虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

nginx.conf 忽略了 nginx-ingress 配置映射片段

将 nginx rtmp 片段发送到 WebRTC

text 有用的nginx命令和片段

linux学习:Nginx--常见功能配置片段与优化-06

配置nginx虚拟主机

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途