Docker发布项目使用Nginx配置域名
步骤如下:
第一步:在Docker 中部署SpringBoot JAR 包。
详情请查看: Spring Boot 学习研究笔记(十二)-Dcoker 中部署SpringBoot jar包
第二步:配置域名DNS解析
在腾讯云或者阿里云购买域名,进行实名认证,配置DNS解析。
在此以阿里云为例,进行域名解析:
1、进入域名解析页面,选择需要使用的域名,点击解析按钮
2、进入解析设置页面,点击添加记录按钮
3、添加记录值并保存
注意:此记录值为安装nginx服务器的外网ip,添加完成即可。
第三步:使用Docker 安装 Nginx镜像并部署
1、下载Nginx 镜像
docker pull nginx:latest
2、创建Nginx 容器
(1)、先创建文件夹
我们在部署Nginx容器前,先在centos 服务器(宿主机)上创建3个文件夹和1个文件 ,分别是cert、html、logs和 nginx.conf文件。
html:Nginx作为web服务器使用时,存储网页
cert: 存储https cert证书
logs:配置错误日志
以上文件夹的作用是挂载重要信息,防止Nginx容器重启后,原来配置的信息丢失。
mkdir -p /data/nginx/{html,cert,logs}
注意:加上参数-p,原因是data目录不存在,nginx目录也不存在。此时应加上参数-p,即没有找到此目录就自动创建。
(2)、然后执行命令创建容器
docker run -d --name nginx -p 80:80 -p 443:443 --restart=always\ -v /etc/localtime:/etc/localtime:ro \ -v /data/nginx/cert:/etc/nginx/cert \ -v /data/nginx/html:/usr/share/nginx/html \ nginx
参数说明:
-d:后台运行 ;(-i -t :启动容器后进入容器内部)
--name:容器的名字
-p 宿主主机端口号:容器端口号
--restart=always:docker服务重启时,Nginx容器也自动重启
-v:挂载文件, “:” 的左侧是主机的目录,右侧是容器目录
注意:
第一,nginx镜像一定要选择正规镜像仓库的镜像,不然会遇到容器自动pause(暂停)或被人植入挖矿病毒。
第二,docker的文件挂载是从主机挂载到容器,不是容器挂载到主机。
第三, \ 反斜杠的作用是告诉Linux命令没有结束,继续执行。
第四步:配置nginx:
nginx配置详解,感兴趣的同学请查看: Nginx研究学习Nginx配置详解
Nginx.conf 配置示例
(1)、将容器中的配置文件拷贝到本地进行修改
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/nginx.conf docker cp nginx:/etc/nginx/conf.d/default.conf /data/nginx/default.conf
(2)、修改nginx.conf配置文件
user nginx; worker_processes 1; 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; include /etc/nginx/conf.d/*.conf; #通过这句话我们知道,nginx的配置文件 }
(3)、修改default.conf 文件
server { listen 80; server_name test.domain.com; #这里是绑定1号域名的地方 location = / { proxy_pass http://server111/page/login; #当访问地址为根的时候,我们指向我们需要的系统的入口,这样可以屏蔽端口号等优点 } location / { proxy_pass http://server111/; #当让问的地址是带路劲的时候,我们启用这条规约,让nginx为我们转发代理这个服务。 } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } server { listen 80; server_name test.sx.com; #这是绑定2号域名的这方 location = / { proxy_pass http://server111/page/index; #当域名为2号的时候,我们通过这个入口来进入我们的系统 } location / { proxy_pass http://server111/; #当域名带路劲访问的时候,我们来代理我们的应用程序 } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
(4)、将修改好的配置文件覆盖之前的容器中的配置文件
docker cp /data/nginx/default.conf nginx:/etc/nginx/conf.d/default.conf docker cp /data/nginx/nginx.conf nginx:/etc/nginx/nginx.conf
(5)、覆盖配置文件后,重新启动容器
docker restart nginx
(6)、创建一个html 放在 nginx / html 里面
cd /data/nginx/html
vim index.html
将内容写入 index.html 文件
<html> <head> <title>home</title> </head> <body> <h1> Welcome to nginx! </h1> </body> </html>
第五步、开放端口
到这一步按说应该完成了,但是有的还是不能进行访问,这是因为防火墙的问题。
第六步、测试域名
浏览器访问域名,加上配置的地址,就可以正常访问了。