最近遇见了一个好玩的事。我一朋友在同一台服务器上配了安装了多套服务。一套 java 的项目,还有一套 apollo 的管理程序。想要通过多个二级域名的方式进行解析。下面就以配置 apollo 的域名解析为例做个简单记录。

# 0、前提

已知,我们现在有一个域名 yuming.cn, 另外,apollo 项目通过 docker 的方式部署在服务器上,通过 ip:8070 可以访问

# 1、域名解析

首先,要有个域名,如果是国内的服务器还要做好备案。然后在域名管理页面做好域名解析。这里我们想通过 apollo.host.cn 进行访问

# 2、安装 nginx

可以通过包管理工具进行安装。为了偷懒,我们这里使用了宝塔管理面板。

# 3、编写 nginx 的配置文件

简单分析一下,为了能够通过域名访问,我们需要做以下几件事

  • 监听将域名绑定到 80 端口;
  • 将 80 端口的请求代理到实际的 ip:8070

为了不干扰主的 nginx 配置文件,这里我们新建一个子配置文件,名为 apollo.conf , 在配置文件中,写入如下配置:

server {
 listen 80;
server_name apollo.yuming.cn; #这里监听并且绑定了 apollo.yuming.cn 到 80 端口
location / {
        proxy_pass http://127.0.0.1:8070; # 这里表示通过域名访问默认路径,则代理到本地的 8070 端口
        proxy_set_header Host $Host:$server_port;#以下的配置为默认配置
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        add_header X-Cache $upstream_cache_status;
        proxy_set_header X-Host $host:$server_port;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 30s;
        proxy_read_timeout 86400s;
        proxy_send_timeout 30s;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

完成了子配置文件的编写,我们需要把子配置文件引入到 nginx 主配置文件中。

通过 ps aux |grep nginx 可以看到正在运行的 nginx 进程以及配置文件所在目录。通过 pwd 命令,可以看到当前的子配置文件所在的目录。

在主配置文件末尾,通过 include /www/server/apollo.conf; 将子配置文件引入。然后重启或者重新加载一下 nginx 的配置文件即可完成配置。

更新于