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

Nginx 基本概念

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

Docker 安装部署Nginx

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

使用docker pull xxx 指令


  1. docker pull nginx:latest

或者


  1. docker pull nginx:指定版本号

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

docker images 指令


  1. docker images
  2. //结果输出如下
  3. [root@10-10-165-57 logs]# docker images
  4. REPOSITORY TAG IMAGE ID CREATED SIZE
  5. docker.io/nginx latest 568c4670fa80 3 weeks ago 109 MB

| 第三步 创建运行容器

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


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

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


  1. [root@10-10-165-57 logs]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 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/ 得到界面如下

好了现在nginx 已经部署完成

Docker Nginx 目前挂载映射

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

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


  1. [root@10-10-165-57 logs]# docker exec -it nginx /bin/bash
  2. //输入命令后进入容器的状态
  3. root@34ae8c48da89:/#

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


  1. //进入容器中的/etc/nginx 目录中
  2. root@34ae8c48da89:/etc/nginx#
  3. // 查看 /etc/nginx 中的文件结构
  4. root@34ae8c48da89:/etc/nginx# ls -a
  5. . .. conf.d mime.types nginx.conf
  6. root@34ae8c48da89:/etc/nginx#

| nginx 目录解析


  1. |- conf.d //nginx 配置文件 包含default.conf 的默认配置文件
  2. |- mime.types //nginx代理的请求头文件
  3. |- nginx.conf //nginx 代理的入口配置文件,配置反向代理及负载均衡从这个文件开始

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


  1. //查看配置文件的指令 cat nginx.conf
  2. root@34ae8c48da89:/etc/nginx# cat nginx.conf
  3. user nginx;
  4. worker_processes 1;
  5. error_log /var/log/nginx/error.log warn;
  6. pid /var/run/nginx.pid;
  7. events {
  8. worker_connections 1024;
  9. }
  10. http {
  11. include /etc/nginx/mime.types;
  12. default_type application/octet-stream;
  13. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  14. '$status $body_bytes_sent "$http_referer" '
  15. '"$http_user_agent" "$http_x_forwarded_for"';
  16. access_log /var/log/nginx/access.log main;
  17. sendfile on;
  18. #tcp_nopush on;
  19. keepalive_timeout 65;
  20. #gzip on;
  21. include /etc/nginx/conf.d/*.conf;
  22. }
  23. root@34ae8c48da89:/etc/nginx#

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

| 第三步,推出nginx 容器中


  1. // exit 退出容器的命令
  2. root@34ae8c48da89:/# exit
  3. exit
  4. [root@10-10-165-57 logs]#

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

创建nginx的目录


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

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


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

| 第五步,创建容器挂载


  1. 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容器

停止和删除如下


  1. docker stop nginx //停止运行的nginx容器
  2. docker rm nginx //删除nginx容器
  3. //再创建新的nginx容器并且挂载到宿主机文件目录中
  4. 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

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

Linux +Docker +Nginx 部署代理转发初探的更多相关文章

  1. Docker Kubernetes hostPort 代理转发

    Docker Kubernetes  hostPort 代理转发 hostPort: 1. 类似docker -p 映射宿主级端口到容器. 2. 容器所在的主机暴露端口转发到指定容器中. 3. hos ...

  2. nginx反向代理转发后页面上的js css文件无法加载【原创】

    故障现象:nginx做代理转发后,发现页面上的js css文件无法加载,页面样式乱了. 原因:没有配置静态资源 解决js css文件无法加载无法访问的问题 解决办法: 修改配置文件nginx.conf ...

  3. Centos8 Docker+Nginx部署Asp.Net Core Nginx正向代理与反向代理 负载均衡实现无状态更新

    首先了解Nginx 相关介绍(正向代理和反向代理区别) 所谓代理就是一个代表.一个渠道: 此时就涉及到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称 ...

  4. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  5. 【转】Nginx反向代理转发tomcat

    http://blog.csdn.net/mlc1218559742/article/details/53117520 最近刚接触nginx,在网上查阅了相关资料,看到最多的形容nginx的词就是反向 ...

  6. Linux系统——Nginx反向代理与负载均衡

    集群集群是指一组(若干个)相互独立的计算机,利用高速通信网路组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运用各自服务的独立服务器.这些服务器之间可以彼此通信,协同向用户提供 ...

  7. linux篇—Nginx反向代理负载均衡

    一.环境准备 反向代理功能架构 3台web服务器,组建出web服务器集群 web01 10.0.0.7 172.16.1.7 web02 10.0.0.8 172.16.1.8 web03 10.0. ...

  8. Linux下nginx反向代理服务器安装与配置实操

    1.我们只要实现访问nginx服务器能跳转到不同的服务器即可,我本地测试是这样的, 在nginx服务器里面搭建了2个tomcat,2个tomcat端口分别是8080和8081,当我输入我nginx服务 ...

  9. Linux之nginx反向代理+三台web+nfs共享存储实现集群配置

    作业四:nginx反向代理+三台web+nfs共享存储实现集群配置 在各个web服务器上挂载nfs [root@localhost nginx]# mount -t nfs 192.168.152.1 ...

随机推荐

  1. CentOS下图形界面安装_Orcaale 11g

    1.安装说明 使用到的工具: 软件名称 版本 软件包 系统 centOS6.8 CentOS-6.8-x86_64-bin-DVD1.iso 数据库 ORACLE11g linux.x64_11gR2 ...

  2. 为什么java的接口的方法是public abstract修饰?为什么属性是public static final 修饰?

     为什么java的接口的方法是public abstract修饰? 1.首先要明白接口的定义和作用是什么: 接口定义:接口是一个全部由抽象方法组成的集合,里面都是抽象方法和常量,用interface修 ...

  3. 【更新中】Hotspot tracer

    Hotspot Follower 闲着没事,打算做一个爬取社会热点的项目,首先通过微信搜狗进行分析. 代码基于PYTHON import requests import json def page(s ...

  4. 关于k8s资源类型和缩写

    资源类型 缩写 描述 clusters     componentstatuses cs   configmaps cm   daemonsets ds   deployments deploy   ...

  5. qsub|pasta|

    cd /xxx/genome_stat/Annotation ln -s /xxx/02.annotation/gff_v2/*.homolog.v2.gff /xxx/genome_stat/Ann ...

  6. VB6制作的自定义ocx控件

    下载后,解压缩,有一个TreeviewExplorer.ocx文件 在Excel的开发工具选项卡,点击插入ActiveX控件 VBA窗体,VB6窗体.VB.Net窗体都可以使用这个自定义控件的功能. ...

  7. linux查看并发连接数

    1.查看TCP的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' netstat ...

  8. go proxy转发工作中碰到的问题

    A-B 需求是一个中转 A-Proxy-B 读取来源请求A,在proxy读取body作些处理,再转给B,再把返回内容转给A 问题出在proxy这里 如果先把请求给B,再读body res, err : ...

  9. springboot学习笔记:6.内置tomcat启动和外部tomcat部署总结

    springboot的web项目的启动主要分为: 一.使用内置tomcat启动 启动方式: 1.IDEA中main函数启动 2.mvn springboot-run 命令 3.java -jar XX ...

  10. Linux下文件 ~/.bashrc 和 ~/.bash_profile 和 /etc/bashrc 和 /etc/profile 的区别 | 用户登录后加载配置文件的顺序

    转自 https://blog.csdn.net/secondjanuary/article/details/9206151 文件说明: /ect/profile 此文件为系统的每个用户设置环境信息, ...