本篇主要着手于解决上一篇文章中没有解决的问题,对于使用https的网站,如果直接应用api,轻则出现不安全警告,重则因为跨域而无法访问。

那么首先我们需要解决跨域问题,这里就要应用到nginx的反代,先介绍一下反代相关的概念。

简介

反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

可以理解为正向代理不需要知道客户端是谁,而反向代理则反之,对于客户端来说,并不知道是哪一台服务器作出的反应。而nginx的反代功能十分强大,可以应用在多个二级域名指向同一个ip等方面。

nginx反向代理配置

首先找到nginx的配置文件nginx.conf,一般在 /usr/local/nginx/conf路径下,如果不确定可以使用find指令找到对应的位置。

find \ -name "nginx.conf"

写入反向代理规则

如果你之前已经使用nginx搭建了wordpress博客等页面的话,相信已经可以看到几个server代码块。我们要做的是写入同样的代码块,基础部分可以参考往期的文章Nginx配置Https访问。如果依然存在疑问可以评论告诉我。

举个例子,如果你希望输入https:/domain/api可以转到api开放的端口,那么便可以加入下面的代码块

server
{
    listen 80; #你想要监听的端口,http默认80,https默认443
    #对应http://127.0.0.1:1207/api
    location \api
    {
        proxy_pass http://127.0.0.1:1207; #以之前的api为例
    }
    #对应http://127.0.0.1:1207
    location \
    {
        proxy_pass http://127.0.0.1:1207;
    }
}

这里需要区分清楚,我之前就是因为一直访问/api路径导致后端无法有效工作,还在其他地方寻找问题,诸如redis的端口等。

这样简单的反向代理就完成了。而我们需要给OPTION请求权限,因此可选择加入add_header Access-Control-Allow-Origin *;

二级域名解析

为二级域名添加一条A记录解析,解析到服务器ip,当访问对应的二级域名时,实现对应端口的跳转,这里就需要设置nginx的server_name一项。

将你原来的服务器地址设置为www.domain.comdomain.com,而api的server块中则填入danmu.domain.com(这里以danmu为例,实际中可为任意解析的二级域名)

server
{
    listen 80;
    server_name danmu.toshokan.top;
    location \
    {
        proxy_pass http://127.0.0.1:1207;
    }
}
server
{
    listen 80;
    server_name toshokan.top www.toshokan.top;
    location 
    index index.html index.htm index.php;
    root  /your/path;
}

这样就可以通过二级域名访问对应的端口了。

https设置

首先你需要申请对应二级域名的证书,可以在阿里云或者其他地方免费申请。对于申请的步骤不做赘述。

获得了新的证书之后,将它与之前的证书放在同一个文件夹下,方便整理。然后如下配置nginx配置文件。

server
{
    listen 443 ssl;
    server_name danmu.toshokan.top;
    ssl_certificate /your/cert/path/cert2.pem; #这里使用刚刚获取到的证书
    ssl_certificate_key /your/cert/path/cert2.key;
    location \
    {
        proxy_pass http://127.0.0.1:1207;
    }
}
server
{
    listen 443 ssl;
    server_name toshokan.top www.toshokan.top;
    ssl_certificate /your/cert/path/cert1.pem;
    ssl_certificate_key /your/cert/path/cert1.key;
    location 
    index index.html index.htm index.php;
    root  /your/path;
}

这样就可以通过新的https二级域名访问对应的端口api了。

最后给出我的弹幕接口,如果懒得搭建的话,欢迎使用我的接口(稳定性不保证https://danmu.toshokan.top。有问题也欢迎在下方的评论中提出,在我能力允许的范围内会提供帮助。

  • 出于服务器稳定性原因,该接口现已停止对外开放,可以使用以下接口https://dplayer.alone88.cn

最终成果,也欢迎大家多发弹幕

【合唱】 届かない恋 '13 - 上原れな & 小木曽雪菜 & 和泉千晶 MIX - WHITE ALBUM2

顺便,昨天万华镜发售了啊,虽然不是很感冒这种,但是还是有点期待的。指莲华(并不