专栏首页性能与架构nginx虚拟主机配置

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)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis过期key的删除策略

    key的过期时间都保存在过期字典中,如果一个键过期了,那么redis什么时候会被删除呢? 删除策略 (1)惰性删除 对key进行操作时才进行过期检查,对CPU最...

    dys
  • 分布式协调服务ZooKeeper工作原理

    大数据处理框架Hadoop、Redis分布式服务Codis、淘宝的分布式消息中间件MetaMQ …… 他们都使用ZooKeeper做为基础部件,可以看出ZooK...

    dys
  • Hive - Hadoop与SQL

    Hive是什么 简单来说,通过 Hive 可以使用 SQL 来查询分析 Hadoop 中的大规模数据 Hive 的思路就是将结构化的数据文件映射为数据库表,然后...

    dys
  • ananas RPC源码分析-在net库基础上使用protobuf实现rpc(二)

    第一篇文章也说到了,net库设计比较“干净”,在其基础上设计rpc框架比较方便。本节一起看下ananas怎样使用protobuf自带的rpc模板,在net库上完...

    路小饭
  • Java 8 中 HashMap 到底有啥不同?

    2、插入元素的时候,首先通过一个hash方法计算得到key的哈希值,进而计算出待插入的位置

    Java小咖秀
  • 框架 | SpringBoot项目发布部署外部tomcat服务器步骤

    码神联盟
  • 语义分割学习路线

    ------------------------------------分割线-----------------------------------------...

    BBuf
  • Vue最佳实践

    Vue 最佳实践,是参考 Vue 官方风格指南并根据过去 Vue 实际项目开发中的经验总结的一套规范建议。本项目的目的是希望每个 Vue 开发者都能尽快熟悉并上...

    用户6167509
  • 揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?

    研究人员最新透露,原本应长期潜伏在计算机控制系统中的震网(Stuxnet)病毒,最终“暴露身份”居然是因为一个低级失误——一个编程错误使其能够扩散到 “古老的”...

    FB客服
  • 创建SpringBoot项目pom文件报错:Error parsing lifecycle processing instructions

    需求描述:采用SpringBoot做了一个快速入门的demo。 问题描述:在pom文件中,引入SpringBoot的父依赖时,pom文件报错。 错误信息...

    故久

扫码关注云+社区

领取腾讯云代金券