宝塔部署nestjs+h5+admin三端

273 阅读2分钟

本次有三个项目admin h5 nestjs,有一个域名

部署nestjs

  1. 采用docker部署nestjs后端,端口映射为3333,部署成功之后,即可以通过ip:3333访问
  2. 添加站点,域名为hotel.blackbear.zone,该域名需要解析到该服务器
  3. 配置反向代理,让接口能正常访问

image.png

配置之后,postman可以请求成功,后端部署完成

部署admin h5

情况一

第一种情况是前端项目请求地址写死,写成hotel.blackbear.zone/api

此时要把前端也部署在hotel.blackbear.zone站点下,不然会跨域

  1. 在hotel.blackbear.zone站点下新建两个目录,一个admin,一个h5

image.png

  1. 然后把打包的代码上传上去,点开可以正常访问
  2. 由于该域名已经配置了反向代理,且前后端在同一个域名下,因此不会跨域,此时部署完成

情况二

如果后端域名为hotel.blackbear.zone,但是前端希望是另一个域名hotel.admin.blackbear.zone

此时仍然新建站点,把前端项目上传使其可以访问

由于此时前后端域名不同,如果前端里的请求地址写死[即和自身域名不一致,则会跨域],此时有两种办法

前端请求接口路径仍然写死,后端设置允许跨域

后端可以在代码里设置允许跨域,此时就不存在跨域问题

前端请求接口路径为空

在第一种情况里,前端的请求接口baseUrl为hotel.blackbear.zone

此时给他变成'',这样接口请求时,地址就是自身域名hotel.admin.blackbear.zone

此时同样设置反向代理即可


#PROXY-START/api
// 所有以api开头的请求
location ^~ /api
{
   **作用**:将请求转发到指定的后端服务器。
     **参数**:`http://49.232.215.100:3333` 是目标服务器的地址和端口。
     **说明**:Nginx 会将所有匹配的请求转发到这个地址,并将响应返回给客户端。
    proxy_pass http://49.232.215.100:3333;
    
     **作用**:设置 `Host` 请求头。
     **参数**:`hotel.admin.blackbear.zone` 是你希望传递给后端服务器的主机名。
    **说明**:通常用于虚拟主机或多域名环境,确保后端服务器能够正确识别请求来源。
    proxy_set_header Host hotel.admin.blackbear.zone;
    
    
    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;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    # proxy_hide_header Upgrade;

    add_header X-Cache $upstream_cache_status;
    #Set Nginx Cache

    set $static_fileyoaihyc1 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
        set $static_fileyoaihyc1 1;
        expires 1m;
    }
    if ( $static_fileyoaihyc1 = 0 )
    {
        add_header Cache-Control no-cache;
    }
}
#PROXY-END/

image.png