【服务器】nginx反向代理和json-server搭配在云服务器搭建数据接口

如果不是打算使用域名映射,直接使用公网IPV4地址,则第一步和第二步可以忽略。
作者由于需要给微信小程序提供数据端口,而微信小程序不支持请求ipv4地址,只能购买和备案域名…( _ _)ノ|

一、购买域名

在阿里云购买域名,如果服务器是在中国大陆境内还需要备案

二、域名解析

将购买的顶级域名及其子域名解析到DNS服务器
在这里插入图片描述

三、宝塔面板新建站点

在这里插入图片描述
新建站点data.gdyzx.xyz,并测试公网是否能够访问到初始页面
在这里插入图片描述

四、启动json-server服务器

  1. 启动tmux并将会话与窗口分离,避免关闭远程连接后进程被关闭:
    # tmux启动tmux窗口
    具体内容Tmux 详解及使用教程
  2. 进入到json文件存储的文件夹
    # cd /www/wwwroot/lotdata.gdyzx.xyz/
  3. 启动json-server服务
    # json-server --watch --port 53000 /www/wwwroot/lotdata.gdyzx.xyz/test.json < /dev/null &注意&符号一定要有,用于后台运行进程,否则无法输入其他指令
  4. 将会话和窗口分离,退出窗口,会话仍在执行(json-server一直在执行)
    # tmux detach将窗口与会话分离
    在这里插入图片描述
  • 即使使用了&,仍然会显示Stopped表明该进程被中止了。原因是json-server程序执行后,试图继续读取终端输入,此时如果输入窗口被关闭则会关闭进程。使用重定向将输入定向到/dev/null,使用# jobs命令发行进程仍在Running后,再进行会话分离。
  • 在《Unix 环境高级编程》第9.8节作业控制中讲到,“如果后台程序试图读取终端,这并不是一个错误,但是终端驱动程序将检测这种情况,并向后台作业发送一个特定信号SIGTTIN,该信号会停止此后台程序,并向用户发送通知”。
  • 参考资料

五、nginx进行反向代理

1.在宝塔面板站点的配置文件
在这里插入图片描述

2.修改内容为如下代码,配置文件含义参考Nginx 配置详解

server
{
    listen 80; #监听端口,不需要改动
    #监听的域名,如果客户端这些域名访问,则由此配置文件接管并反向代理到proxy_pass
    server_name lotdata.gdyzx.xyz www.lotdata.gdyzx.xyz; 
    #访问默认页面 从根目录中寻找以下文件 由于设置了proxy_pass所以失效
    index index.php index.html index.htm default.php default.htm default.html;
    #站点文件根目录
    root /www/wwwroot/data.gdyzx.xyz;
    
    location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
        proxy_pass  http://localhost:53000;  #!!!求转向的服务器列表!!!
        deny 127.0.0.1;  #拒绝的ip
        allow 172.18.5.54; #允许的ip           
    } 
}

在这里插入图片描述
3. 其中proxy_pass是最核心最重要的参数,要与json-server映射的端口一致。
整个工作流程为:

  1. json-server将json文件内容映射到以下本地端口
http://localhost:53000/posts
http://localhost:53000/comments
http://localhost:53000/test
http://localhost:53000/profile
  1. 当网络上有人访问lotdata.gdyzx.xyz/test时,DNS服务器将其请求引导到本服务器;本服务器检测到来自lotdata.gdyzx.xyz的请求时,根据nginx的配置文件,将其反向代理到http://localhost:53000(proxy_pass设置内容)
  2. 本地端口收到http://localhost:53000/test请求,返回数据。
  3. 用户收到数据

六、json-server深入教程

转载自json-server 详解
在这里插入图片描述
非常好,非常详细

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值