关于同服务器多项目多域名配置

目前公司所有项目已经全线是 Docker 部署了 为了做 反向代理 (其实也就是一个服务器了 这里使用nginx) 先单独创建一个容器 里面只有 一个 Nginx 做web服务器 代号 欧几里德号 然后每个项目单独一个容器 Nginx + PHP 服务 代号 GNT-00 然后每个歼灭任务(请求)过来的时候先进过 欧几里德号 根据不同的配置 转发到 具体的 GNT-00 中来执行


域名

域名 全称 Domain Name 简称域名、网域,是由一串用点分隔的字符组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。域名可以说是一个IP地址的代称,目的是为了便于记忆后者

域名的核心是 域名系统 全称 Domain Name System 缩写 DNS

其主要功能用来解析域名 因为计算机中间的通信是找 IP 地址的 那你不可能让用户去记住你的服务器IP地址吧 当然是记住一个有意义的名字(也就是域名) 当输入域名的时候会先去 DNS 根据域名解析找到 正确的IP地址 然后访问 这个过程叫做正向解析

那么反向解析就是根据IP地址找域名了

注意中间的解析过程是一个递归的过程 比如 输入abc.com 会先到最近的DNS服务查找IP地址 如果没有会去下一个DNS服务器查找 这样递归下去

域名分级

域名的第一级是顶级域,它包括通用顶级域,例如.com、.net和.org;以及国家和地区顶级域,例如.us、.cn和.tk

举例:google.com 其中 com 是顶级域名, google 是二级域名 如果在来 mail.google.com 其中 mail 就是三级域名了

但是我们平时可能存在误区 把 google.com 整体当作是 一级域名(顶级域名) mail.google.com 这种当作是二级域名 这种理论是上错误的 但是感觉都这么讲 也就将错就错了

域名注册

域名注册商:主要提供域名注册服务,负责域名的技术维护和服务,并负责维护其管理的顶级域名的注册名称数据库。

要成为一个域名的注册商,需得到ICANN和该域名的域名注册局的认可

域名注册人在注册商处登记域名信息后,域名注册管理机构和域名注册商通常会收取费用,一般是按域名的有效期计算,单位是年。收到费用后,向域名注册管理机构发去注册信息,后者授权前者在相应的顶级域名中分配名称,并使用一种特殊协议——WHOIS协议,发布域名注册信息。最后,注册商将域名的使用权限发放给域名注册人。此交易在注册商的角度看,被称为域名的销售或租赁;在注册人的角度看,被称为域名的注册或购买。目前,这一过程大多已经自动化。顶级域名注册管理机构和域名注册商的完整列表由ICANN发布

二级域名配置(三级域名)

以阿里云为例 链接 见这里 https://help.aliyun.com/knowledge_detail/39785.html

在填写域名指向IP地址后 Nginx配置

还是用我们公司的服务架构来说明

官网 gundam.com 这个其实是二级域名

现在需要配置 API服务 需要域名 api.gundam.com 三级域名

在阿里云后台我们配置 api.gundam.com 指向 192.168.1.100 这个IP(举例的IP请换真实公网的) 这个IP其实是我们的最外层的代理服务器(这里是一个单独的Nginx容器)

在Nginx中有很多的项目的配置文件 一般 sites-enabled(文件夹随便你开心命名) 下会放很多的项目配置文件 如果你是多项目 可以按项目来命名等等

比如下面这种 nginx 配置文件片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
proxy_connect_timeout 300s;
proxy_send_timeout 600s;
proxy_read_timeout 300s;
proxy_buffer_size 128k;
proxy_buffers 8 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 128m;
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
fastcgi_buffers 8 128k;
send_timeout 60;
client_max_body_size 20M;
listen 8000;
server_name api.gundam.com;
location / {
proxy_pass http://192.168.1.100:10000;
include /conf.d/proxy-params.conf;
}
}

当请求 api.gundam.com 首先根据域名解析找到 192.168.1.100 请求发进来的时候 Nginx会读取配置文件 然后发现 server_name 是这个

Nginx 就会转发请求到 192.168.1.100:10000 下 因为都是 docker 容器的, 在服务器的 10000 端口下映射的是 当前的API项目

当请求进入到 10000 端口下的容器中时候就是正常的解析 各种处理 然后返回结果了,其他多项目配置同理

这样就完成了公司 同服务器 多项目 多域名 的配置


-------------The End-------------