Docker中Nginx部署多前端与解决跨域问题实战
版权申诉
5星 · 超过95%的资源 19 浏览量
更新于2024-09-08
1
收藏 4KB TXT 举报
本示例提供了在Docker环境下部署Nginx服务器以承载多个前端应用的方法,同时解决了跨域问题。适用于使用阿里云CentOS7系统和Docker 20.10.6版本的场景,涉及到的技术栈包括Nginx 1.19.5、Docker、Java和SpringBoot。
第一部分:部署第1个前端Nginxdev环境
首先,从Docker Hub拉取官方Nginx镜像:
```
docker pull nginx
```
然后,不挂载任何配置启动一个Nginx容器,用于后续复制配置文件:
```
docker run --name nginx-web-p8080:80 -d nginx dev
```
通过`docker ps`获取容器ID,接着将容器内的Nginx配置文件复制到宿主机上便于管理:
```
docker cp <容器ID>:/etc/nginx/nginx.conf /mnt/nginx/conf
docker cp <容器ID>:/etc/nginx/conf.d/default.conf /mnt/nginx/conf/conf.d/
```
停止并删除该临时容器:
```
docker stop <容器ID>
docker rm <容器ID>
```
最后,正式挂载配置文件、日志、缓存和部署目录,并解决时区问题:
```
docker run --name nginx-web -d -p 8080:80 \
-v /etc/localtime:/etc/localtime:ro \
-v /mnt/nginx/cache/files:/etc/nginx/cache/files \
-v /mnt/nginx/upload:/etc/nginx/upload \
-v /mnt/nginx/www:/usr/share/nginx/html \
-v /mnt/nginx/logs:/var/log/nginx \
-v /mnt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mnt/nginx/conf/conf.d:/etc/nginx/conf.d nginx dev
```
配置Nginx以服务前端应用,例如在`/mnt/nginx/www`目录下上传测试页面,可以通过`http://serverIp(或者dev域名):8080`访问。
第二部分:部署第2个前端Nginxtest环境
创建一个新的Dockerfile,内容如下:
```Dockerfile
FROM nginx
# 在这里可以添加自定义配置,如复制额外的配置文件或设置环境变量
```
构建Docker镜像:
```
docker build -t nginx-test .
```
运行新的Nginxtest容器,挂载相应的目录:
```
docker run --name nginx-web-test -d -p 8081:80 \
-v /mnt/nginx/test:/usr/share/nginx/html \
-v /mnt/nginx/conf/nginx-test.conf:/etc/nginx/nginx.conf \
-v /mnt/nginx/test-logs:/var/log/nginx \
-v /mnt/nginx/conf/test-conf.d:/etc/nginx/conf.d nginx-test
```
在`/mnt/nginx/test`目录下部署前端应用,使用不同的端口(如8081)访问。
第三部分:处理跨域问题
对于前端调用Java后端的应用,需在Nginx配置文件中添加CORS策略。例如,在`/mnt/nginx/conf/nginx.conf`或对应的`default.conf`或`nginx-test.conf`中添加以下配置:
```nginx
http {
...
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
if ($request_method = 'OPTIONS') {
return 204;
}
...
}
```
这样,Nginx会允许来自任何源的请求,并处理跨域预检请求。
总结,这个示例展示了如何在Docker中高效利用Nginx部署多个前端应用,同时通过配置Nginx解决跨域限制,确保前端与后端服务之间的通信顺畅。
2020-09-30 上传
2021-01-09 上传
点击了解资源详情
2021-05-31 上传
2022-01-08 上传
点击了解资源详情
2023-09-01 上传
2024-10-24 上传
`超哥
- 粉丝: 0
- 资源: 8
最新资源
- 作业1:cst438_assign1
- z.js:via通过Unicode的ZW(N)Js隐藏文本
- 基于Linux、QT、C++的点餐系统
- zerg:小程序教程源码-源码程序
- glogIntroduce,c语言会员积分管理系统源码,c语言程序
- 最新时时地震信息程序 V1.0
- studienarbeit2021:Niclas Mummert,斯图加特DHBW和Bertrandt Technologie GmbH的研究
- 全功能11-26A.zip
- 将Excel文件动态导入到SQL Server
- 信用卡养卡app开发HTML5模板
- Android应用源码之项目实例 商业项目源代码.zip项目安卓应用源码下载
- wx-computed2:几乎照搬vue原始码为小程序增加计算和观看特性-源码程序
- matlab 图片中隐藏信息以及提取的程序代码.zip
- level-0-module-1-alysiaroh:GitHub Classroom创建的level-0-module-1-alysiaroh
- easy_roles:轻松管理Rails的角色
- queue,c语言制作图书管理软件源码,c语言程序