背景:cdn项目上,由于客户的IDC源站需要传入Host请求头,然后在预热的时候,也需要传入Host请求头进行预热,这就导致了和预热接口的冲突。所有需要自己搭建一套环境来模拟客户的IDC源。这里主要使用Nginx虚拟主机来完成。

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

基于域名的虚拟主机
基于端口的虚拟主机
基于IP的虚拟主机 

这里我们主要使用基于域名的虚拟主机,主要配置了 cdn.goclouds.cn,test1.goclouds.cn 和 hello.com 三个host。具体配置如下:

user root; 
worker_processes auto; 
#error_log /var/log/nginx/error.log; # 制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg 
#pid /run/nginx.pid; 
events { 
    worker_connections  1024; 
} 
http { 
    include       mime.types; # 文件扩展名与文件类型映射表 
    default_type  application/octet-stream; # 默认文件类型(默认为text/plain) 
    sendfile        on; # 允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。 
    keepalive_timeout  65; # 连接超时时间,默认为75s,可以在http,server,location块。 
    server { # 配置默认server,拒绝所有请求 
        listen 80 ; 
        server_name _; # _ 并不是重点 __ 也可以 ___也可以 
        return 403; # 403 forbidden 
    } 
    server { # 配置host1 
        listen       80; 
        server_name  cdn.goclouds.cn; 
        location / { 
            root   /home/ec2-user/web1/; # 根路径 
            index  index.html index.htm; # 设置欢迎页 
        } 
    } 
    server { # 配置host2 
        listen 80; 
        server_name  test1.goclouds.cn; 
        location / { 
            root   /home/ec2-user/web2/; 
            index  index.html index.htm; 
        } 
    } 
    server { # 配置host3 
        listen 80; 
        server_name  hello.com; 
        location / { 
            root   /home/ec2-user/web3/; 
            index  index.html index.htm; 
        } 
    } 
}