0.前言

我们创建OJ如果是内网的话可以参考我下面这篇文章来修改端口号进行内网访问:

centos(宝塔)搭建HOJ(2)—依赖关系和修改端口 – 每天进步一点点 (longkui.site)

如果你部署在外网上,有可能通过域名来访问,这个时候,我们就需要通过域名来映射我们修改好的端口。比如,你把OJ端口设置为IP:8081,那么你申请的域名就要指向这个端口。

这篇文章主要介绍:

(1)如何配置域名访问

(2)如何通过nginx设置反向代理

(3)如何配置https访问

1.配置域名与反向代理

我们这里通过阿里申请了一个域名,

http://oj.longkui.site

我们要把这域名指向我们前面设置的IP和端口。我们来到阿里云,找到域名,我们首先把域名指向到我们的公网服务器IP,不带端口。

然后,我们来登陆到我们的服务器界面,进入到宝塔。首先你要安装好nginx。然后我们创建一个网站,域名就是我们刚才申请的域名,类似下图:

我们创建完毕后,然后,设置这个网站,添加反向代理,可以参考下图:

注意,这个地方的8081端口是因为我前面的文章中修改过docker-compose.yml文件,把里面的端口映射改过,所以我这个地方直接映射到8081端口了。然后点击提交,访问我们的域名。

可以看到,我们直接访问 http://oj.longkui.site 是可以正常访问的。

2.开启https访问

有些部署在公网上可能要开启https的访问,也比较简单,这里先介绍一下从阿里申请的SSL证书后如何添加。如果你没有阿里申请的SSL证书,也可以申请宝塔的SSL证书。

我们给域名申请证书后,选择下载

我们的服务器是nginx,所以这里选择nginx格式下载。

下载解压后会有两个文件, xxx.key文件和,xxx.pem文件,

我们用记事本分别打开这两个文件,然后把里面的内容复制到我们刚才创建的网站的SSL部分

然后,点击保存。

同时,你需要改一下docker-compose.yml文件中的443端口,因为https要占用443端口,所以会报错,可以参考改成下面这样,

  ports:
      - "8081:80"
      - "8443:443"

然后在那个文件夹下执行 docker-compose up -d

然后重启一下nginx服务,访问 https://oj.longkui.site

就能访问https的网站了

同时,我们也可以要求强制使用https访问;

或者不需要的时候,直接关闭SSL访问。