本次有三个项目admin h5 nestjs,有一个域名
部署nestjs
- 采用docker部署nestjs后端,端口映射为3333,部署成功之后,即可以通过ip:3333访问
- 添加站点,域名为hotel.blackbear.zone,该域名需要解析到该服务器
- 配置反向代理,让接口能正常访问
配置之后,postman可以请求成功,后端部署完成
部署admin h5
情况一
第一种情况是前端项目请求地址写死,写成hotel.blackbear.zone/api
此时要把前端也部署在hotel.blackbear.zone站点下,不然会跨域
- 在hotel.blackbear.zone站点下新建两个目录,一个admin,一个h5
- 然后把打包的代码上传上去,点开可以正常访问
- 由于该域名已经配置了反向代理,且前后端在同一个域名下,因此不会跨域,此时部署完成
情况二
如果后端域名为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/