0


基于Docker的Nginx部署教程

基于Docker的Nginx部署教程

本教程基于Docker部署Nginx,演示部署Nginx的版本为1.22.0,操作系统为CentOS7,其部署方式包括以下两种方式:

  1. 单机部署
  2. 自定义配置模块部署

什么是Nginx

Nginx (engine x) 是一款高性能、轻量级、稳定性高、并发性好的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 广泛应用于Http服务、负载均衡、反向代理等实用场景。其配置简单、配置语法简洁,社区活跃,学习成本低等优点,使其成为最受欢迎的的服务器应用之一。

部署前的注意

在进行部署之前,最好对服务器的防火墙进行相关处理,命令如下,请按需使用

# 开放8888端口,端口自定义,我这里以8888为例
firewall-cmd --zone=public --add-port=8888/tcp --permanent#关闭8888端口  
firewall-cmd --zone=public --remove-port=8888/tcp --permanent# 配置立即生效
firewall-cmd --reload# 查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports

firewall-cmd --zone=public --list-all

# 关闭防火墙 如果不想管控端口,直接关闭系统防火墙,啥都能通,但安全性不强,不建议。
systemctl stop firewalld.service
systemctl start firewalld.service
systemctl restart firewalld.service
# 查看防火墙状态
firewall-cmd --state# 查看监听的端口netstat-lnpt# 检查端口被哪个进程占用netstat-lnpt|grep8888# 查看进程的详细信息ps8888

单机部署Nginx

拉取Nginx镜像

# 拉取Nginx镜像,版本使用1.22.0docker pull nginx:1.22.0

# 查看拉取镜像docker images

镜像拉取成功则如下图所示

在这里插入图片描述

创建主本地目录

# 创建配置目录mkdir-p /data/nginx/conf
# 创建日志目录mkdir-p /data/nginx/log
# 创建前端显示目录mkdir-p /data/nginx/html
#对nginx本地文件进行递归赋权chmod-R755 /data/nginx

如下图

在这里插入图片描述

部署Nginx容器

1.生成容器
# 先简单启动容器docker run -p80:80 --name nginx -d nginx:1.22.0

# 进入容器内部dockerexec-it 容器id /bin/bash 
2.复制容器配置到宿主机
# 将容器nginx.conf文件复制到宿主机dockercp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf

# 将容器conf.d文件夹下内容复制到宿主机dockercp nginx:/etc/nginx/conf.d /data/nginx/conf/conf.d

# 将容器中的html文件夹复制到宿主机dockercp nginx:/usr/share/nginx/html/index.html /data/nginx/html
dockercp nginx:/usr/share/nginx/html/50x.html /data/nginx/html
3.重启容器
# 使用数据卷重启nginx容器docker run -p80:80 --name nginx -v /data/nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html -d nginx:1.22.0

查看容器是否启动成功

在这里插入图片描述

4.测试验证

访问服务器ip:80端口(请先保证防火墙的端口已经打开,或者已经关闭),如下图所示,则安装成功。

在这里插入图片描述

5.Nginx配置

进入本地宿主机配置目录,由于我们启用的是include模式,所以在内部创建了conf.d目录

在这里插入图片描述

在这里插入图片描述

我们设置一个简单测试的配置,默认只有一个

default.conf

配置文件,如果有其他配置需要可以在conf.d目录下继续添加配置,我们在这里增加一个

mydoc.conf

的配置文件

在这里插入图片描述

配置mydoc.conf

server {
    listen       8001;
    listen  [::]:8001;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html/mydoc;
        index  index.html index.htm;
    }
}

配置default.conf

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html/home;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html/home;
    }
    
    # 配置mydoc的测试代理
    location /mydoc {
        proxy_pass   http://127.0.0.1:8001/;
        proxy_set_header Host $host;
     }

    # 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/mydoc;
    #    #fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_pass   192.168.2.103:9000;
    #    fastcgi_index  index.php;
    #    #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #    fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$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;
    #}
}

在/data/nginx/html的目录下创建对应的mydoc目录,并在目录内创建一个index.html,我们这边直接复制根目录下的index.html进行一些修改作为标识,如下图:

在这里插入图片描述
在这里插入图片描述

构建完成后,我们需要重启Nginx容器,这里多提一点,我们在使用二进制部署的Nginx时,会使用

Nginx -s reload

的重载命令,那么Docker部署的Nginx的重载命令如下:

dockerexec-it[容器id/容器名称] nginx -s reload

执行完毕后,我们测试访问
在这里插入图片描述

至此Nginx简单的单机部署完成。后续大家可以在部署好的容器进行配置修改,以适应新的服务需求。

自定义配置模块部署

Nginx之所以能够适应很多复杂的应用场景,在于他的具有扩展配置模块的能力。开发者根据业务场景组合配置扩展模块就变得尤为重要。开发者往往需要编译配置Nginx的很多扩展模块,比如stream、http_stub_status_module、http_ssl_module等,来适应变化的需求场景。

由于直接使用Docker部署的Nginx本身就开启可很多模块。虽然这些模块很多有用,但是没用到的也很多。如下图:

在这里插入图片描述

如果觉得以上这些开启的模块够用,那么可以直接使用。

1.自制对应镜像

我们使用Dockerfile制作定制化的Nginx镜像,这里提供两种Dockerfile

编译好的Nginx直接打包成镜像

一般用于已经有nginx服务的情况,直接将以前的编译过的包直接封装进入Docker镜像中就可以了,代码如下:

# 使用Centos7作为基础镜像
FROM centos:7

# 安装必要的工具
RUN yum -y update && yum -y install tar && yum clean all

# 将已编译好的 Nginx 文件复制到容器中
COPY nginx.tar /usr/local/

# 进入 Nginx 安装目录
WORKDIR /usr/local/

# 解压 Nginx 包
RUN tar -xvf nginx.tar

# 暴露 Nginx 端口
EXPOSE 80

# 在容器启动时运行 Nginx
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

直接打包时编译nginx镜像

这个直接使用创建对应镜像即可,代码如下:

# 使用CentOS 7作为基础镜像
FROM centos:7

# 安装编译所需的依赖包
RUN yum update -y && \
    yum install -y gcc make zlib-devel pcre-devel openssl-devel wget && \
    yum clean all

# 下载Nginx源码并解压缩
RUN wget http://nginx.org/download/nginx-1.22.0.tar.gz && \
    tar -zxvf nginx-1.22.0.tar.gz

# 进入Nginx源码目录,编译并安装
RUN cd nginx-1.22.0 && \
    ./configure --prefix=/usr/local/nginx --with-stream --with-http_stub_status_module --with-http_ssl_module && \
    make && \
    make install

# 清理安装过程中的临时文件
RUN rm -rf nginx-1.22.0.tar.gz nginx-1.22.0

# 设置启动命令
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

将以上的Dockerfile文件选择一种直接执行

Docker build -t my_new_nginx_images .

执行结果如下

在这里插入图片描述

2.启动容器

执行启动容器命令

# 启动容器docker run --name my_new_nginx -d-p80:80 my_new_nginx_images

3.验证测试

在这里插入图片描述

标签: docker nginx 容器

本文转载自: https://blog.csdn.net/murderTV/article/details/136846726
版权归原作者 懒斯落特 所有, 如有侵权,请联系我们删除。

“基于Docker的Nginx部署教程”的评论:

还没有评论