工作笔记

Nginx实战(一) 虚拟主机

2019-09-17
阅读次数:

“虚拟主机(Virtual Host)可以在一台服务器上绑定多个域名,架设多个不同的网站,一般在开发机或者要部署多个小网站的服务器上需要配置虚拟主机。”

利用虚拟主机,不用为每个运行的网站提供一台单独的nginx服务器或单独运行一组nginx进程。虚拟主机提供了在同一台主机、同一组进程上运行多个网站的功能。

在nginx配置文件nginx.conf中,默认的虚拟主机配置如下

server {
  listen       80;
  server_name  localhost;
  access_log  logs/host.access.log  main;
  location / {
     root   html;
     index  index.html index.htm;
  }
}  

基于IP的虚拟主机

可以在一块物理网卡上绑定多个lP地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。设置IP别名也非常容易,只须配置系统上的网络接口,让它监听额外的lP地址。

server {
    listen      192.168.30.23:80;
    server_name www.dev.com www.example.com;
    root /data/cn;
}
 
server {
    listen      192.168.39.24:80;
    server_name www.test.com www.example.com;;
    root /data/com;
}  

基于域名的虚拟主机

基于域名的虚拟主机是最常见的一种虚拟主机。只需配置你的DNS服务器,将每个主机名映射到正确的lP地址,然后配置Nginx服务器,令其识别不同的主机名就可以了。这种虚拟主机技术,使很多虚拟主机可以共享同一个lP地址、同一个端口,有效解决了lP地址不足与重要端口被占用的问题。所以,如果没有特殊要求使你必须用一个基于lP的虚拟主机,最好还是使用基于域名的虚拟主机。

编辑/etc/hosts加入虚拟域名以便解析。

vi /etc/hosts

编辑内容如下

192.168.30.23 www.test.com www.dev.com

修改Nginx配置文件nginx.conf,添加虚拟域名支持

server {
    listen      80;
    server_name www.dev.com;
    location / {
    root   /usr/local/dev;
    index  index.html;
    }
}
 
server {
    listen      80;
    server_name www.test.com;
    location / {
    root   /usr/local/test;
    index  index.html;
    }
}

在这个配置中,nginx仅仅检查请求的“Host”头以决定该请求应由哪个虚拟主机来处理。如果Host头没有匹配任意一个虚拟主机,或者请求中根本没有包含Host头,那nginx会将请求分发到定义在此端口上的默认虚拟主机。在以上配置中,第一个被列出的虚拟主机即nginx的默认虚拟主机——这是nginx的默认行为。而且,可以显式地设置某个主机为默认虚拟主机,即在”listen”指令中设置”default_server”参数:

server {
    listen      80 default_server;
    server_name example.net www.example.net;
    ...
}

基于端口的虚拟主机

基于端口的虚拟主机配置,使用端口来区分,浏览器使用域名或ip地址:端口号访问。

server {
    listen 8888;
    server_name www.dev.com;
    root /usr/local/dev;
}
 
server {
    listen 9999;
    server_name www.test.com;
    root /usr/local/test;
}

相似文章

下一篇 Presto安装部署

评论