Docker 中使用Nginx 一个端口启动多个前端项目

1.pull image

bash 复制代码
docker pull nginx

2.创建docker-compose

bash 复制代码
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "1234:80"
      - "1235:443"
    volumes:
      - ./conf:/etc/nginx/conf.d
      - ./html:/usr/share/nginx/html
      - ./logs:/var/log/nginx
    restart: unless-stopped

3.目录挂载准备

目录结构如下:

bash 复制代码
conf/
├── default.conf    #nginx配置文件
html/
├── app1/           # 应用1
│   ├── index.html
│   └── ...
├── app2/           # 应用2
│   ├── index.html
│   └── ...
├── app3/           # 应用3
│   ├── index.html
│   └── ...
└── index.html      # 默认首页
log/                # 日志目录
docker-compose.yml  # docker-compose 配置信息

4.创建 default.conf 监听80端口同时启动多个前端

bash 复制代码
server {
    listen       80;
    server_name  localhost;
    client_max_body_size 1000M;
    add_header X-Frame-Options SAMEORIGIN;
    
    # 全局 CORS 配置
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

    # 处理 OPTIONS 预检请求
    if ($request_method = 'OPTIONS') {
        add_header Access-Control-Max-Age 1728000;
        add_header Content-Type 'text/plain; charset=utf-8';
        add_header Content-Length 0;
        return 204;
    }

    #-------------------------------------------------------------------------🚀

    # app1前端配置
    location /app1/ {
        alias /usr/share/nginx/html/app1/;
        index index.html index.htm;
        try_files $uri $uri/ /app1/index.html;
    }
        
    # app1 后端服务配置
    location /app1/api/ {
        proxy_pass http://www.sol_china.cn/app1/;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    #-------------------------------------------------------------------------🚀

    # app2前端配置
    location /app2/ {
        alias /usr/share/nginx/html/app2/;
        index index.html index.htm;
        try_files $uri $uri/ /app2/index.html;
    }
        
    # app1 后端服务配置
    location /app2/app-api/ {
        proxy_pass http://192.168.0.100:4567/;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    #-------------------------------------------------------------------------🚀
    
    # others server config....

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
}

5.构建服务

在对应的目录(见3小节),执行构建命令:

bash 复制代码
docker-compose -p dockernginx up -d

6.Vue项目注意点(如果你徘徊在404的漩涡中请检查以下内容是否和配置路径匹配)

1.路由部分 base 属性

2.vue.config.js publicPath

3.env.production 中 API_BASE_URL

说明:其中1、2对应 对应 location /{appName}/ (前端)** 3 对应服务访问 **location /{API_BASE_URL }/ (后端)

相关推荐
开开心心就好5 天前
清理重复文件释放C盘空间的工具
安全·智能手机·pdf·gitlab·音视频·intellij idea·1024程序员节
数据皮皮侠AI9 天前
中国土地利用驱动因子数据集(9种驱动因子/裁剪到省市/Tif)
大数据·人工智能·笔记·能源·1024程序员节
数据皮皮侠AI13 天前
上市公司耐心资本数据(2010-2025)
大数据·人工智能·笔记·能源·1024程序员节
开开心心就好15 天前
解决图片无页码添加功能的实用工具
javascript·python·安全·智能手机·pdf·音视频·1024程序员节
学传打活16 天前
【边打字.边学昆仑正义文化】_25_宇宙动植物的由来(1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
开开心心就好20 天前
用户推荐的文件解锁与强制操作工具
安全·智能手机·pdf·scala·音视频·symfony·1024程序员节
liguojun202525 天前
软硬一体智慧场馆系统推荐——助力场馆数字化高效升级
java·大数据·人工智能·物联网·1024程序员节
开开心心就好1 个月前
吾爱大佬原创的文件时间修改工具
安全·智能手机·pdf·电脑·智能音箱·智能手表·1024程序员节
开开心心就好1 个月前
近200个工具的电脑故障修复合集
安全·智能手机·pdf·电脑·consul·memcache·1024程序员节
数据皮皮侠AI1 个月前
中国城市可再生能源数据集(2005-2021)|顶刊 Sci Data 11 种能源面板
大数据·人工智能·笔记·能源·1024程序员节