虚拟主机

目前除了大型网站是独占ECS之外(其实多数企业已微服务容器化、Serverless等..)为了提高服务器的利用率,都会在一台服务器上运行多个项目,但项目如何配置在Nginx上面可以同时运行呢? 以下分享如何实现这个功能。

功能配置

为了演示,提前将修改域名的解析记录到ECS上。
Nginx之4包罗万象 - (虚拟主机)
然后在/data/webroot/project1 & project2 分别建立一个默认页

mkdir -p /data/webroot/project1
mkdir -p /data/webroot/project2
echo "HelloWorld! This is Project1" > /data/webroot/project1/index.html
echo "HelloWorld! This is Project2" > /data/webroot/project2/index.html

不同端口,区分不同项目(经常用)

server {
    listen 8081;
    server_name project.yekangming.com;
    location / {
        root /data/webroot/project1;
        index index.html;
    }
}

server {
    listen 8082;
    server_name project.yekangming.com;
    location / {
        root /data/webroot/project2;
        index index.html;
    }
}

访问效果
Nginx之4包罗万象 - (虚拟主机)
Nginx之4包罗万象 - (虚拟主机)

不同域名,区分不同项目(经常用)

server {
    listen 80;
    server_name project1.yekangming.com;
    location / {
        root /data/webroot/project1;
        index index.html;
    }
}

server {
    listen 80;
    server_name project2.yekangming.com;
    location / {
        root /data/webroot/project2;
        index index.html;
    }
}

访问效果
Nginx之4包罗万象 - (虚拟主机)
Nginx之4包罗万象 - (虚拟主机)

不同IP,区分不同项目(很少用)

server {
    listen 172.16.49.101:80;
    server_name localhost;
    location / {
        root /data/webroot/project1;
        index index.html;
    }
}

server {
    listen 172.16.49.102:80;
    server_name localhost;
    location / {
        root /data/webroot/project2;
        index index.html;
    }
}

不同路径,区分不同项目(很少用)

server {
    listen 80;
    server_name project.yekangming.com;
    location /project1 {
        root /data/webroot/project1;
        index index.html;
    }
    location /project2 {
        root /data/webroot/project2;
        index index.html;
    }
}

配置详解

listen; #监听的端口,默认监听本地全部IP地址
server_name;#监听的域名
location; #请求的URI匹配,默认是/
root;#本地文件系统的路径
index; #默认页名称

小技巧

在维护多虚拟主机的配置时,不会将全部的站点写入同一个配置文件中,因为代码量太长维护性及可读性太差。一般会使用includebo包含另外一个配置文件夹专门用于存放虚拟主机站点的配置。配置方法很简单,在http段中加入include /usr/local/nginx/conf/extra/*.conf; 在Nginx重启时会读取这个文件夹中.conf为后缀名的配置文件。每一个站点单独维护一个配置文件,对Nginx配置出错时可以很快排查到哪一个站点哪一个配置的问题。而且对于脚本去生成配置到文件夹中很简便。

相关文章:

  • 2021-12-03
  • 2021-09-19
  • 2021-07-03
  • 2022-02-02
  • 2022-02-06
  • 2021-08-13
猜你喜欢
  • 2021-11-13
  • 2021-04-20
  • 2021-09-02
  • 2021-12-26
  • 2021-11-14
相关资源
相似解决方案