nginx虚拟主机配置

虚拟主机的概念

虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,每一个虚拟主机都可以有独立的域名和独立的目录

nginx虚拟主机的配置

nginx的虚拟主机就是通过nginx.conf中server节点指定的,想要设置多个虚拟主机,配置多个server节点即可

先看一个最简单的虚拟主机配置示例

server {  
       listen 80;  
       server_name a.test.com;  
       location / {  
                index index.html;  
                root /home/www/host_a/;  
        }  
    }
listen 80; 

指定这个虚拟主机监听的是80端口

server_name a.test.com;

指定这个虚拟主机名为a.test.com,当用户访问a.test.com时,就有这个虚机主机进行处理

虚拟主机名可以有4种格式:

(1)准确的名字,例如此例中的a.test.com

(2)*号开头的,例如 *.test.com

(3)*号结尾的,例如 mail.*

(4)正则表达式形式,例如

server_name ~^www\d+\.test\.com$;

注意,使用正则表达式形式时,必须以'~'开头

server_name也可以同时指定多个,例如:

server_name test.com www.test.com *.test.com;

这时优先级为:

(1)确切的名字

(2)最长的以*起始的通配符名字

(3)最长的以*结束的通配符名字

(4)第一个匹配的正则表达式名字

location /

因为所有请求都是/开头的,所以这行表示匹配所有请求

index index.html;

指定此虚拟主机的默认首页为index.html

root /home/www/host_a/;

指定此虚拟主机的物理根目录为/home/www/host_a/

案例

(1)对两个域名配置相应的虚拟主机,指定不同的目录

a.test.com -> /home/www/a

b.test.com -> /home/www/b

配置

server {  
       listen 80;  
       server_name a.test.com;  
    #开启网站目录文件列表功能,访问目录时列出其中的文件列表,默认不开启
    autoindex on; 
       index index.html;  
       root /home/www/a/; 
    }
server {  
       listen 80;  
       server_name b.test.com;  
       index index.html;  
       root /home/www/b/;   
    #禁止对self目录的访问
    location /(self)/ {   
         deny all;   
    } 
    }

(2)对不同访问目录指定不同物理目录

server {
    listen        80;
    #使用正则格式,这里表示接受任何ip
    server_name    ~^\d+\.\d+\.\d+\.\d+$;
    index    index.html index.htm;
    root /home/lg/www/;
    location /share {
        root /home/lg/Downloads;
    }
    location ^~ /Videos {
        root /home/lg/;
        autoindex on;
        autoindex_exact_size on;
        autoindex_localtime on;
        allow    all;
    }
    location ^~ /html5 {
        root /home/lg/workspace/nodejs/;
        index index.html index.htm;
    }
    location = /404.html {
        root   /usr/share/nginx/html;
    }
}
autoindex_exact_size

默认为on,显示出文件的确切大小,单位是bytes

改为off后,显示出文件的大概大小,单位是kB或者MB或者GB

autoindex_localtime

默认为off,显示的文件时间为GMT时间。

改为on后,显示的文件时间为文件的服务器时间

allow all;

允许所以访问

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2015-09-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏指路者

Virtualmin一键安装包快速安装Virtualmin教程

Virtualmin是一个基于Webmin的虚拟主机管理模块,也是当前最受欢迎的开源虚拟主机管理软件。是在它的协助下,可以使得虚拟主机变的更为快速、可靠、安全。...

48110
来自专栏我爱编程

如何安装https证书 (ubuntu+apache2)

搬运自知乎 FengYQ:https://zhuanlan.zhihu.com/p/43699640

47320
来自专栏名山丶深处

CentOS在线安装RabbitMQ3.7

32650
来自专栏nice_每一天

转载 Elasticsearch开发环境搭建(Eclipse\MyEclipse + Maven)

作者:好记性不如烂笔头! 出处:http://www.cnblogs.com/zlslch/

22110
来自专栏云计算教程系列

在CVM上迁移Apache数据

在Debian 8上,Apache2 Web服务器默认文件在/var/www/html中。此目录与操作系统一起位于根文件系统上。您可能希望将文档移动到另一个目录...

12540
来自专栏linux运维学习

linux学习第三十九篇:Apache用户认证,域名跳转,Apache访问日志

Apache用户认证 虚拟主机的配置文件: vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf ...

266100
来自专栏Java架构师学习

详细介绍如何搭建ELK集群

Logstash 1.1 安装 注:安装在需要收集日志的机器上。 cd /data/softs sudo wget https://download.ela...

49070
来自专栏JavaEdge

HTML5新特性1 <aside> 标签

<aside> 标签定义其所处内容之外的内容 aside 的内容应该与附近的内容相关。 网站中主要有以下两种使用方法

8410
来自专栏Venyo 的专栏

ELK 简易安装教程 + 用 Nssm 安装服务

1.      安装 Elasticsearch 1)     安装 JDK 2)     验证 JDK cmd: java -version 3)     下...

34670
来自专栏dalaoyang

Linux安装Logstash

本文环境是在腾讯云服务器CentOS7.2搭建的,JDK1.8,Logstash-5.4.2。

85720

扫码关注云+社区

领取腾讯云代金券