展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

测试3

  • 前端访问后端时,关闭后端接口,通过nginx转发

  • 编写后端

# 控制层
@RestController
@RequestMapping("/user")
public class TestController {
@GetMapping("/test")
public String test(){
return "test success";
}
}
# yml
server:
port: 8080
  • 部署后端,测试(未关闭8080端口,直接访问后端接口)

  • 编写前端

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a href="http://124.222.5.107:8080/user/test">直接访问</a><br>
<a href="http://124.222.5.107:8005/user/test">请求转发</a>
</body>
</html>
  • 放到如下目录

  • 配置nginx

  • 重启nginx,测试

  • 未关闭8080端口,直接访问

  • 未关闭8080端口,请求转发

  • 关闭8080端口,请求转发

  • 将后端项目打成镜像,在后端jar包所在目录编写Dockerfile

# 因为项目使用的java11
FROM chniny/java:11.0.12
VOLUME /tmp
# jar包名称
ADD app.jar /app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
  • 构建并启动
# 构建
docker build -t chniny/demo:4.0 .
# 启动容器
docker run -dit --restart=always --name demo -p 8080:8080 chniny/demo:4.0
# 不停止容器退出前台
ctrl + p + q
  • 云服务器先放开8080端口,测试

  • 使用内网

# 服务器创建网络
docker network create -d bridge my-bridge
# 将nginx添加到网络
docker network connect my-bridge nginx
# 将后端镜像添加到网络
docker network connect my-bridge demo
# 注意
# 如果使用如下方式启动后端镜像
docker run -it --net=host --name demo -p 8080:8080 chniny/demo:4.0
# 添加到自定义的网络时会报错
Error response from daemon: container sharing network namespace with another container or host cannot be connected to any other network
# 需使用入下方式
docker run -dit --restart=always --name demo -p 8080:8080 chniny/demo:4.0
# 查看nginx的网络
[root@VM-12-15-centos jar]# docker inspect 7b85604f7502 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",
"IPAddress": "172.18.0.2",
# 查看后端镜像的网络
[root@VM-12-15-centos jar]# docker inspect 0c88ace83397 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.4",
"IPAddress": "172.17.0.4",
"IPAddress": "172.18.0.3",
# 测试:后端ping nginx -> 成功
docker exec -it demo ping nginx
# 测试:nginx ping 后端-> 报错
docker exec -it nginx ping demo
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "ping": executable file not found in $PATH: unknown
# 清理此容器的网络占用(未使用)
docker network disconnect --force 网络模式 容器名称
docker network disconnect --force bridge nginx
  • 前端index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a href="http://124.222.5.107:8080/user/test">直接访问</a><br>
<a href="http://124.222.5.107:8005/user/test">请求转发</a>
</body>
</html>
  • index.html放到如下目录

  • 配置nginx,并重启

  • 云服务器关闭8080端口

  • 直接访问

  • 请求转发 -> 测试成功

posted @   DogLeftover  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示