收起左侧

有关前后端分离项目docker部署在FNConnect下访问

5
回复
235
查看
[ 复制链接 ]

4

主题

3

回帖

0

牛值

江湖小虾

2025-9-25 13:01:15 显示全部楼层 阅读模式
悬赏1飞牛币未解决

背景

部署前后端分离项目,前端vue项目,后端springbot项目

镜像构建部署成功,APP里局域网可访问,非局域网无法访问

问题情况

局域网可访问 ,FN Connect 下无法访问

配置文件

docker-compose.yml

version: "3.4"

name: yudao-system

services:
  server:
    container_name: yudao-server
    build:
      context: ./yudao-server/
    image: yudao-server
    restart: unless-stopped
    ports:
      - "48080:48080"
    environment:
      SPRING_PROFILES_ACTIVE: local
      JAVA_OPTS: ${JAVA_OPTS:--Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom}

  admin:
    container_name: yudao-admin
    build:
      context: ./yudao-ui-admin/
      args:
        NODE_ENV: ${NODE_ENV:-production}
        PUBLIC_PATH: ${PUBLIC_PATH:-/}
        VUE_APP_TITLE: ${VUE_APP_TITLE:-我的管理系统}
        VUE_APP_BASE_API: ${VUE_APP_BASE_API:-/admin-api}
        VUE_APP_APP_NAME: ${VUE_APP_APP_NAME:-/}
        VUE_APP_TENANT_ENABLE: ${VUE_APP_TENANT_ENABLE:-false}
        VUE_APP_CAPTCHA_ENABLE: ${VUE_APP_CAPTCHA_ENABLE:-false}
        VUE_APP_DOC_ENABLE: ${VUE_APP_DOC_ENABLE:-false}
        VUE_APP_BAIDU_CODE: ${VUE_APP_BAIDU_CODE:-fadc1bd5db1a1d6f581df60a1807f8ab}
    image: yudao-admin
    restart: unless-stopped
    ports:
      - "8090:80"
    depends_on:
      - server
    volumes:
      - ./yudao-ui-admin/nginx.conf:/etc/nginx/nginx.conf
      - ./yudao-ui-admin/dist:/usr/share/nginx/html:ro  # 确保静态文件正确挂载

volumes:
  nginx-config:  # 修正 volume 名称
  # driver: local  # 可选,默认就是 local

nginx DockerFile

FROM nginx:latest


# 切换到 root 用户进行文件操作
USER root


# 复制静态文件
COPY dist/ /usr/share/nginx/html/

RUN chown -R nginx:nginx /usr/share/nginx/html && \
    chmod -R 755 /usr/share/nginx/html && \
    chmod 644 /usr/share/nginx/html/*

# 切换回 nginx 用户运行
USER nginx

# 复制 nginx 配置
COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

nginx.conf


# 全局配置
user 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;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
  
    # Gzip 压缩
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
  
    # 您的 server 配置(放在 http 块内)
    server {
        listen       80;  # 容器内使用 80 端口
        server_name  localhost; ## 重要!!!修改成你的外网 IP/域名

        location / { ## 前端项目
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }

        location /admin-api/ { ## 后端项目 - 管理后台
            proxy_pass http://yudao-server:48080/admin-api/; ## 使用 Docker 服务名
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # 可选:超时设置
            proxy_connect_timeout 300s;
            proxy_send_timeout 300s;
            proxy_read_timeout 300s;
        }
    }
}

效果图

局域网

正常登录进入首页

image.png

非局域网

无法登录 提示操作失败系统异常,且nginx的docker无日志

image.png

附件: 您需要 登录 才可以下载或查看,没有账号?立即注册
收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

3

主题

695

回帖

0

牛值

社区共建团

2025-9-25 14:46:35 显示全部楼层

nginx相关和飞牛组件冲突了

4

主题

3

回帖

0

牛值

江湖小虾

2025-9-25 20:58:27 楼主 显示全部楼层

image.png

image.png

现在知道了 是nginx做了代理域名,后端没有做代理地址 直接走的内网ip 要是能获取到这个地址就好了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如果想在外网访问你的项目,建议还是自己购买云服务器解决,你是无法做到用nginx去代理飞牛官方的域名做端口转发的  详情 回复
2025-9-26 11:57

3

主题

17

回帖

0

牛值

江湖小虾

2025-9-26 09:26:59 显示全部楼层

又是程序员子

1

主题

2

回帖

0

牛值

社区共建团

2025-9-26 11:57:52 显示全部楼层
杨开心 发表于 2025-9-25 20:58
现在知道了 是nginx做了代理域名,后端没有做代理地址 直接走的内网ip 要是能获取到这个地址就好了
...

如果想在外网访问你的项目,建议还是自己购买云服务器解决,你是无法做到用nginx去代理飞牛官方的域名做端口转发的

4

主题

3

回帖

0

牛值

江湖小虾

2025-9-27 13:39:16 楼主 显示全部楼层

现在想法是把前端和后端统一部署在tomcat下 一个端口应该就没事了

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则