Nginx-添加并部署多个二级域名And添加SSL证书

本地环境

先说一下本地环境, 比较乱

域名是百度云的 「 mehaei.com

服务器在腾讯云

安装了宝塔运维工具, 主域名下是我的博客网站

实现方案

现在是想部署另外一套服务,并添加上域名访问

1. 主域名下添加不同的端口来实现

2. 主域名下添加不同的子目录实现

3. 通过多个二级域名实现

以上几种方案中, 我会优先使用添加二级域名, 因为不同服务可能差异比较大, 而且随着项目越来越多, 后面会较难管理, 所以这篇写一下就以上这种环境应该怎么添加二级域名以及二级域名添加ssl证书

部署实施

(1)第一步

先将自己的后端服务安装好, 并启动后端服务, 这里我用一个开源项目来举例

项目地址(程序员常用工具箱)

https://github.com/CorentinTh/it-tools

安装

代码语言:javascript
复制
docker run -d --name it-tools --restart unless-stopped -p 9999:80 corentinth/it-tools:latest

设置映射端口号是9999

代码语言:javascript
复制
[root@VM-24-2-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS 
7f9e135babb1 corentinth/it-tools:latest   "/docker-entrypoint.…"   3 weeks ago Up 3 weeks 0.0.0.0:9999->80/tcp, :::9999->80/tcp it-tools

(2) 第二步

腾讯云主机添加解析记录

登录腾讯云控制台 - 到服务器管理中 - 域名 - 添加域名解析 - 进行以下操作

(3)第三步

配置服务器上的nginx

登录宝塔管理界面, 当然也可以直接在服务器命令行操作, 以宝塔页面举例

找到配置修改,在http中 添加以下配置

代码语言:javascript
复制
server
    {
        listen 80;
        server_name tool.mehaei.com;
        index index.html index.htm index.php;
        # 项目地址
        root  /www/server/phpmyadmin;
        location / {
            proxy_pass http://127.0.0.1:9999/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

到这里你就可以通过 http://tool.mehaei.com 访问项目了

额外补充

申请ssl证书

自建博客网站 添加https免费证书

其它步骤都相同, 只是填写申请时绑定域名一定要写到二级域名, 因为免费版的ssl证书不支持*.mehaei.com(泛指定)域名, 审核大概几分钟就通过了

https://cloud.tencent.com/document/product/400/54500?from_cn_redirect=1

修改刚添加的nginx配置, 配置上证书路径

代码语言:javascript
复制
server
    {
        listen 80;
        listen 443 ssl;
        server_name tool.mehaei.com;
        index index.html index.htm index.php;
        root  /www/server/phpmyadmin;
        # 证书路径
        ssl_certificate    /www/cert/tool/tool.mehaei.com_nginx/tool.mehaei.com_bundle.pem;
        ssl_certificate_key    /www/cert/tool/tool.mehaei.com_nginx/tool.mehaei.com.key;
        location / {
            proxy_pass http://127.0.0.1:9999/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

这样你的项目就支持https请求了, 接下来只需要将http请求强制转为https请求就配置完成了

代码语言:javascript
复制
server
    {
        listen 80;
        listen 443 ssl;
        server_name tool.mehaei.com;
        index index.html index.htm index.php;
        root  /www/server/phpmyadmin;
        ssl_certificate    /www/cert/tool/tool.mehaei.com_nginx/tool.mehaei.com_bundle.pem;
        ssl_certificate_key    /www/cert/tool/tool.mehaei.com_nginx/tool.mehaei.com.key;
        # 强制http转https
        if ($server_port !~ 443){
            rewrite ^(/.*)$ https://$host$1 permanent;
        }
        location / {
            proxy_pass http://127.0.0.1:9999/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

终于大功告成了, 记录一下, 防止以后自己找不到, 如果再加其它项目的话, 步骤完全一样, 今天就这样, DONE!!!