部署一个网页Docker+Nginx

简介: 在docker中运行一个nginx容器,部署一个网页

一、安装docker

1.1 centos 7使用yum安装

# Sep 1: 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CEsudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务sudoservice docker start# 查看vesiondocker version

1.2 配置镜像加速器

阿里云容器镜像服务:https://cr.console.aliyun.com/cn-shanghai/instances/mirrors

关于镜像加速器

使用加速器可以提升获取Docker官方镜像的速速

sudomkdir-p /etc/docker
sudotee /etc/docker/daemon.json <<-'EOF'{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.3 简单操作-运行一个nginx

# 搜索nginx的镜像docker search nginx
# 拉取latest版本的nginx镜像docker pull nginx:latest
# 查看本地存储的镜像docker images
# 运行容器docker run --name nginx -p80:80 -d nginx
# 进入容器内部docker exec -it nginx bash
1.3.1 命令参数说明
  • --name nginx指定容器名称为nginx
  • -p 80:80端口映射,将本地80端口映射到容器内部的80端口
  • -d 设置容器在后台一直运行
  • nginx 指定运行的镜像
1.3.2 其他参数
  • -v 挂载映射目录

二、部署nginx

2.1 复制容器内的nginx的配置文件

docker cp nginx:/etc/nginx /data/nginx

复制过来的结构

image.png

其中目前用到的有nginx.conf配置文件和conf.d文件夹下的default.conf默认配

置文件

说明

文件

挂载路径

容器nginx路径

nginx相关

nginx.conf和conf.d

/data/nginx

/etc/nginx

html路径

html文件夹

/data/nginx/html

/usr/share/nginx/html

日志文件

log文件夹

/data/nginx/logs

/var/log/nginx

2.1.1 拓展

docker cp命令


// 将容器内文件复制到宿主机中

docker cp [容器名称]:/目录 /目录


// 将宿主中的文件复制到容器内部

docker cp /目录 [容器名称]:/目录

2.2 创建其他挂载目录

mkdir-p /data/nginx/{html,logs}

2.3 修改default.conf文件

server {
 
    #端口号    listen       80;
    #定义使用 localhost 访问    server_name  localhost;
 
    #charset koi8-r;    #access_log  /var/log/nginx/host.access.log  main; 
    location / {
        #根目录位置        root   /usr/share/nginx/html;
        #index 文件位置        index  test.html;
    }
 
    #error_page  404              /404.html; 
    # redirect server error pages to the static page /50x.html    #    error_page   500502503504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
 
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80    #    #location ~ \.php$ {    #    proxy_pass   http://127.0.0.1;    #} 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000    #    #location ~ \.php$ {    #    root           html;    #    fastcgi_pass   127.0.0.1:9000;    #    fastcgi_index  index.php;    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;    #    include        fastcgi_params;    #} 
    # deny access to .htaccess files, if Apache's document root    # concurs with nginx's one    #    #location ~ /\.ht {    #    deny  all;    #}}

2.4 在html文件夹下创建test.html网页

<html><head><title>Mynginx</title></head><body><h1>Hello Nginx!!!
</h1></body></html>

2.5 删除之前创建的容器

docker stop nginx
docker rm nginx

2.6 创建新的容器

docker run --name nginx -d-p80:80 \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/logs:/var/log/nginx \
# 上面因为已经将nginx容器中的nginx文件夹整个cp过来的# 这里将挂载映射整个文件夹# 为后面实现ssl做铺垫-v /data/nginx:/etc/nginx \
nginx

2.7 不停止nginx更新配置文件

2.7.1 第一种
# 进入到nginx容器的内部docker exec -it nginx bash# 测试配置文件是否有问题,显示successful证明配置文件没有问题nginx -t# 更新nginx -s reload
2.7.2 第二种

第一种是进入到容器内部,有些繁琐

下面将两者整合

# 后面的nginx -t是nginx的命令docker exec [容器名称(nginx)] nginx -t# 后面的nginx -s reload是nginx的命令docker exec [容器名称(nginx)] nginx -s reload

三、配置ssl

3.1 购买阿里云的免费证书

阿里云每年可以有20张免费的证书,即可以为20个域名提供ssl

https://yundun.console.aliyun.com/?p=cas#/certExtend/free

3.2 创建证书关联域名解析

image.png

image.png

域名解析:https://dns.console.aliyun.com/#/dns/domainList

完成签发之后,状态这一栏会是这个样子

image.png

继续点击“下载”,下载我们需要的服务器证书,这里选择nginx

image.png

3.3 配置证书

3.3.1 创建证书存放目录
mkdir /data/nginx/ssl
3.3.2 上传证书

将下载的证书解压,上传到这个存放目录中

会有xxx.pem和xxx.key这两个文件

image.png

由于我们在运行容器的时候已经挂载了-v /data/nginx:/etc/nginx

这个时候我们进入到容器内部

docker exec -it nginx bash

在/etc/nginx/ssl文件夹中发现这两个文件

cd /etc/nginx/ssl
ls-lh
3.3.3 查看挂载配置
docker inspect nginx

image.png

3.4 修改配置文件

配置方式可以使用下载证书旁边的帮助,在Nginx或Tengine服务器上安装证书

#以下属性中,以ssl开头的属性表示与证书配置有关。server {
    listen 443 ssl;
#配置HTTPS的默认访问端口为443。#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。    server_name yourdomain;
    root html;
    index index.html index.htm;
    ssl_certificate /etc/nginx/ssl/cert-file-name.pem;  
    ssl_certificate_key /etc/nginx/ssl/cert-file-name.key; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。    ssl_prefer_server_ciphers on;
    location / {
        root html;  #Web网站程序存放目录。        index index.html index.htm test.html;
    }
}
# 注意 以下代码片段需要放置在nginx.conf文件中server {}代码段后面,即设置HTTP请求自动跳转HTTPS后,nginx.conf文件中会存在两个server {}代码段。server {
    listen 80;
    server_name yourdomain; #需要将yourdomain替换成证书绑定的域名。    rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。    location / {
        index index.html index.htm test.html;
    }
}

3.5 刷新配置文件

docker exec nginx nginx -tdocker exec nginx nginx -s reload

访问配置的域名,就会看到自己创建的界面了

image.png

由于我们没有将/usr/share/nginx/html中的原始默认页面cp过来,所以不会看到熟悉的nginx的默认页面。

目录
相关文章
|
5月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
2326 4
|
5月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
280 5
|
5月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1729 8
|
5月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
4459 8
|
5月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
857 4
|
Ubuntu 应用服务中间件 网络安全
Ubuntu下 Nginx静态代理部署网页常见报错
Ubuntu下 Nginx静态代理部署网页常见报错
Ubuntu下 Nginx静态代理部署网页常见报错
|
应用服务中间件 nginx
nginx打开网页报错
nginx路径配置错了,主要是斜杠问题。错误: 或者 盘符:/ 盘符: 另外,url不用加双引号正确: server { listen 8800; server_name localhost; #charset koi8-r; #access_log logs/host.
1156 0
|
10月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
950 87
|
6月前
|
编解码 应用服务中间件 Linux
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
571 1