首页 > 系统相关 >Linux +Docker +Nginx 部署代理转发初探

Linux +Docker +Nginx 部署代理转发初探

时间:2023-01-06 16:59:43浏览次数:58  
标签:容器 nginx etc Nginx Linux Docker root docker 10

很多开发人员仅仅只会码代码,如果让开发人员部署一些深入点的东西,或者做负载均衡等,很多开发人员估计就懵逼了,作为一个专业的开发还需要懂一些基本的运维知识;虽然说在互联网行业中,中小企业都有一个牛逼的运维工程师,基本上也没有什么开发人员的事情,所以很多开发人员仅仅知道nginx这个事情,但是不会用,下面我来讲解下Nginx 服务的基本知识.

Nginx 基本概念

这里就不详细说了,[请参考]

Docker 安装部署Nginx

第一步先拉取Nginx最新版本镜像

使用docker pull xxx 指令


docker pull nginx:latest

或者


docker pull nginx:指定版本号

第二步 可以先查看下本地镜像

docker images 指令


docker images

//结果输出如下

[root@10-10-165-57 logs]# docker images

REPOSITORY          TAG                IMAGE ID            CREATED            SIZE

docker.io/nginx    latest              568c4670fa80        3 weeks ago        109 MB

| 第三步 创建运行容器

这里我直接映射80端口,还没有映射任务文件的情况


docker run -d -p 80:80 --name nginx docker.io/nginx

好了,这时候nginx 服务已经运行起来了,可以通过docker ps查看运行中的容器


[root@10-10-165-57 logs]# docker ps

CONTAINER ID        IMAGE              COMMAND                  CREATED            STATUS              PORTS                NAMES

34ae8c48da89        docker.io/nginx    "nginx -g 'daemon ..."  25 minutes ago      Up 13 minutes      0.0.0.0:80->80/tcp  nginx

以上已经运行了一个命名为nginx 的容器,现在可以访问了

假设我的http://117.50.60.123/ 以及解析到我这台linux服务器中,则可以直接访问http://117.50.60.123/ 得到界面如下

(https://note.youdao.com/yws/api/personal/file/WEB75fca319455efd463344a0c9b17675c0?method=download&shareKey=fedb7bb411c88a3b1c95b138a9dd061f)

好了现在nginx 已经部署完成

Docker Nginx 目前挂载映射

上面部署好Nginx后,还不够,我们还需要做负载均衡以及代理转发等相关配置,这个配置文件我们可以直接进入容器中配置,也可以把容器中的文件挂载映射到宿主机上,以方便进行配置

| 第一步,我们先进入容器中查看下nginx的目录结构


[root@10-10-165-57 logs]# docker exec -it nginx /bin/bash

//输入命令后进入容器的状态

root@34ae8c48da89:/#

| 第二步,进入容器的nginx目录中,并且查看目录结构


//进入容器中的/etc/nginx 目录中

root@34ae8c48da89:/etc/nginx# 

// 查看 /etc/nginx 中的文件结构

root@34ae8c48da89:/etc/nginx# ls -a

.  ..  conf.d  mime.types  nginx.conf

root@34ae8c48da89:/etc/nginx#

| nginx 目录解析


|- conf.d  //nginx 配置文件 包含default.conf 的默认配置文件

|- mime.types //nginx代理的请求头文件

|- nginx.conf //nginx 代理的入口配置文件,配置反向代理及负载均衡从这个文件开始

了解了nginx的配置目录结构后,我们nginx的运行过程中有很多的访问日志,这个日志文件记录在哪里呢?我们可以先查看下nginx.conf 配置


//查看配置文件的指令 cat nginx.conf

root@34ae8c48da89:/etc/nginx# cat 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;

}

root@34ae8c48da89:/etc/nginx#

从上面的配置文件中可以看到nginx 的日志文件在默认在/var/log/nginx的目录中;现在我们以及搞清楚了两个目录文件/etc/nginx 和/var/log/nginx目录结构,那我们需要把这两个目录文件挂载到宿主机下面,方便我们日后的配置及日志的查看工作

| 第三步,推出nginx 容器中


// exit 退出容器的命令

root@34ae8c48da89:/# exit

exit

[root@10-10-165-57 logs]#

| 第四部,创建宿主机的挂载目录

创建nginx的目录


[root@10-10-165-57 /]# mkdir /home/root/nginx

nginx目录中创建日志文件目录


[root@10-10-165-57 /]# mkdir /home/root/nginx/logs

| 第五步,创建容器挂载


docker run -d -p 80:8080 -v /home/root/nginx:/etc/nginx -v /home/root/nginx/logs:/var/log/nginx --name nginx docker.io/nginx

运行上面的挂载创建容器后会提示不能创建,主要由于之前我们创建了一个nginx的容器,占用了80端口导致,我们需要停止并且删除之前创建的nginx容器

停止和删除如下


docker stop nginx //停止运行的nginx容器

docker rm nginx //删除nginx容器

//再创建新的nginx容器并且挂载到宿主机文件目录中

docker run -d -p 80:8080 -v /home/root/nginx:/etc/nginx -v /home/root/nginx/logs:/var/log/nginx --name nginx docker.io/nginx

好了以上就把容器中的相关配置目录和日志目录挂载到宿主机文件目录中了,挂载好后我们可以进入宿主机目录创建我们自己的反响代理配置了,后面就不再描述,具体的反向代理及负载均衡相关配置详解下回再详细讲解

标签:容器,nginx,etc,Nginx,Linux,Docker,root,docker,10
From: https://www.cnblogs.com/stry/p/17028159.html

相关文章

  • docker逃逸汇总
    利用特权模式进行docker逃逸使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行dockerrunprivileged时,Docker容器将被允许访问主机上的所有设备......
  • 三 docker存储和网络
    docker数据管理数据卷volumes可供一个或多个容器使用的特殊目录,可以在容器之间共享,对数据卷的修改会立即生效且不会影响镜像,与容器声明周期独立,即容器删除数据卷也可......
  • Linux关闭防火墙 / 开放端口
    Linux的网络可以ping通,但是linux启动的应用如tomcat/nginx等都无法访问?问题分析:这是由于Linux的安全问题默认开启了防火墙,并且禁用(不开放)所有端口。解决思路:关闭......
  • nginx的使用
    一、安装 二、配置文件 三、日志配置 四、参数定义1、nginx代理文件夹,开启目录流量,类似FTP#server或location段里配置#启用目录流量,相当于ftpautoindexo......
  • linux系统一键开启root登陆
    服务器只能key登陆,用这个后直接可以root方式登陆sudo-iechoroot:要设置的密码|sudochpasswdrootsudosed-i's/^#\?PermitRootLogin.*/PermitRootLoginyes/g'/......
  • 46-Docker-Container容器管理各种操作
    容器相关命令[root@ubuntu2204~]#dockercontainerUsage:dockercontainerCOMMANDManagecontainersCommands:attachAttachlocalstandardinput,output,and......
  • Docker 版本升级
    Docker版本升级1、查看系统要求Docker要求CentOS系统的内核版本高于3.10,查看CentOS的内核版本。uname-a2、删除旧版本yumremovedockerdocker-commondock......
  • 简单java servlet的登录脚本,部署到docker
    先打算参考这篇文章Simpleloginpageexampleusingjspservlet-Candidjava内含war文件和zip文件。但是tomcat上该war文件总是报错。于是又参考这篇(46条消息)Jav......
  • Docker版思源笔记使用Dark+主题,无法显示“霞鹜文楷等宽”字体的解决方式
    在Docker版思源笔记中使用Dark+主题时,编辑器的字体与Dark+中主题预览的字体不一致。此问题咨询了思源笔记官方得到是回复是“官方暂时不考虑Docker版的编辑器暂不考虑......
  • Linux - Linux 删除文件 空间未释放
       答案原文:Linux系统删除文件后空间并没有释放原因及解决方法https://www.cnblogs.com/shttke/p/16754312.html二、原因分析未释放磁盘空间的原因:在Linux或者Un......