docker部署nginx和后端多服务,nginx代理的是网关8080端口,目前项目访问就404,
http://172.16.15.47:1889/api/blade-system/tenant/info?domain=http:%2F%2F172.16.15.47:1889 ,api接口路径
代理路径 http://172.16.15.47:8080/
proxy_pass http://172.16.15.47:8080/;
docker部署前后端分离项目
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
7条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
首先,为了确保问题的准确解决,我们需要确认几个关键点:
- 你的Docker容器配置是否正确。
- Nginx配置文件中的location块设置是否恰当。
这里我会提供一个基本的Nginx配置示例,用于将前端应用和后端API分离开。请根据实际情况调整这个配置。
假设你的前端应用运行在80端口,而后端API运行在8080端口。首先,你需要为每个服务创建一个Dockerfile,并构建镜像。例如,对于前端应用(假设使用Node.js)的Dockerfile可能如下所示:
# 使用官方Node.js基础镜像 FROM node:14-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 80 CMD ["npm", "start"]
对于后端API(假设使用Java Spring Boot)的Dockerfile可能如下所示:
# 使用官方Java基础镜像 FROM openjdk:8-jdk-alpine ARG JAR_FILE=target/my-api.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"]
接下来,为每个服务创建一个Docker-compose.yml文件,分别启动前端应用和后端API。
version: '3' services: frontend: build: ./frontend ports: - "80:80" backend: build: ./backend ports: - "8080:8080"
然后,在主机上创建一个名为nginx.conf的Nginx配置文件,内容如下:
worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; # 假设这是你的静态资源目录 index index.html index.htm; try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://localhost:8080/; # 这里是后端API的地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
保存上述配置文件后,执行以下步骤来启动整个环境:
- 在前端应用目录下,运行
docker-compose up -d
来启动前端应用。 - 在后端API目录下,运行
docker-compose up -d
来启动后端API。 - 最后,在Nginx所在的主机目录下,启动Nginx:
nginx -c nginx.conf
现在你应该可以通过
http://172.16.15.47/
访问前端应用,而API请求应该通过http://172.16.15.47/api/blade-system/tenant/info?domain=http:%2F%2F172.16.15.47:1889
被代理到后端服务。如果你仍然遇到问题,请检查日志文件(Nginx的日志位于/var/log/nginx/error.log),它可能会提供关于错误的更多细节。同时,请确保你的后端API确实监听了8080端口,并且可以响应来自Nginx的请求。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题
- ¥20 RL+GNN解决人员排班问题时梯度消失
- ¥60 要数控稳压电源测试数据
- ¥15 能帮我写下这个编程吗
- ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路