nginx虚拟主机配置

时间:2022-05-06
本文章向大家介绍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 ~^wwwd+.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;

允许所以访问