linux(centos) docker 安装 nginx

1、拉取nginx最新版本镜像

docker pull nginx:latest

查看镜像

docker images 或者 docker images -a

2.启动nginx容器

docker run -d -p 80:80 --name nginx nginx

使用docker run命令,启动nginx容器。

  • --name,设置容器名。为方便记忆,设定名称为nginx
  • -d,后台运行。
  • -p,端口映射,把容器端口映射到宿主端口。默认部署在80端口

3、修改nginx监听端口

不希望nginx监听默认的80端口,可以使用-p选项,修改映射端口。

docker run -d -p 8080:80 --name nginx nginx

4、修改配置和内容

如果想要修改nginx的配置或内容,可以使用-v选项进行数据卷映射。

nginx的配置内容主要包括:

  • 配置,默认位置:/etc/nginx/nginx.conf。
  • 网站,默认位置:/usr/share/nginx。
  • 模块,默认位置:/etc/nginx/modules。

我们将网站设置在宿主机上,并通过数据卷映射的方式到nginx展示。命令如下:

复制代码
docker run -d -p 8080:80 -v 宿主机绝对路径:/usr/share/nginx/html  --name nginx nginx

利用数据卷映射,可以修改nginx的默认配置和加载网站。同时,容器创建后,就无法修改。一旦关闭容器,容器中的临时数据就会消失。利用数据卷映射,也很好解决了数据持久化的问题。

复制代码
// 启动容器
docker run -d -p 80:80 nginx
// 创建容器挂载路径
mkdir -p /data/nginx/{conf,conf.d,html,logs}
// 查看容器ID
docker ps -a
// 复制配置文件到挂载路径


docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/
docker cp nginx:/etc/nginx/conf.d/default.conf /data/nginx/conf.d/
docker cp nginx:/usr/share/nginx/html /data/nginx/html
// 关闭容器
docker stop nginx
// 删除容易
docker rm nginx
// 以挂载的方式启动容器
docker run -id --name=nginx \
-p 8080:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-d nginx


当docker跑nginx镜像时,设置端口映射,则只有该映射端口起作用,nginx配置的其他端口无效 所以只对80 生效
如果想使用多个端口需要
// 以挂载的方式启动容器
docker run -id --name=nginx \
-p 80:80 \
-p 8085:8085 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-d nginx


// 以挂载的方式启动容器   https  证书目录
docker run -id --name=nginx \
-p 80:80 \
-p 8085:8085 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/cert:/etc/nginx -d nginx  \
-d nginx
#配置 nginx.conf
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
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;
}
# 配置default.conf
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
   #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题
  location / {
         # docker 使用容器地址才能找到文件 自动映射到挂载目录
         root   /usr/share/nginx/html;
        index  index.html index.htm;
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.html?s=$1 last;
            break;
        }
    }
#后台服务配置,配置了这个location便可以通过http://域名/jeecg-boot/xxxx 访问      
 location ^~ /shimmer{
        proxy_pass              http://127.0.0.1:7001/shimmer/;# 如果是用docker请填写真实IP 因为容器内部访问不到本127.0.0.1或locahost
        proxy_set_header        Host 127.0.0.1;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    #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;
    }
}

5.静态资源部署:

将静态资源放置~/nginx/html目录中,即可访问.

6.端口绑定:

vim ~/nginx/conf.d/static.conf

一个端口配置一个项目

复制代码
server {
    listen 81; # 监听的端⼝
    server_name localhost; # 域名或ip
    location / { # 访问路径配置
        root /usr/share/nginx/index;# 根⽬录
        index index.html index.htm; # 默认⾸⻚
    }
     error_page 500 502 503 504 /50x.html; # 错误⻚⾯
         location = /50x.html {
         root html;
     }
 }

7.域名绑定:

复制代码
server {
    listen 81; # 监听的端⼝
    server_name www.ahunag.com; # 域名或ip
    location / { # 访问路径配置
        root /usr/share/nginx/index;# 根⽬录
        index index.html index.htm; # 默认⾸⻚
    }
     error_page 500 502 503 504 /50x.html; # 错误⻚⾯
         location = /50x.html {
         root html;
     }
 }

8.反向代理

复制代码
upstream tomcat-kkb{
     server 192.168.220.12:8080;
 }
 server {
    listen 80; # 监听的端⼝
    server_name www.kkb.com; # 域名或ip
    location / { # 访问路径配置
    root index;# 根⽬录
        proxy_pass http://tomcat-kkb;
        index index.html index.htm; # 默认⾸⻚
    }
 }

9.负载均衡:(默认为轮训)设置权重

nginx upstream tomcat-kkb

{ server 192.168.220.12:8888 weight=2;

server 192.168.220.12:8080;

}

10.解决前端AJax跨域问题

复制代码
ajax请求:url: "/test"

使用代理到->192.168.111.135:8888/test

server{
    listen 81;
    location / {
        root /usr/share/nginx;
        index  test.html;
     }
location /test {
        proxy_pass http://192.168.111.135:8888/test;
     }
}

11 .https 配置

复制代码
// 以挂载的方式启动容器   https  证书目录
docker run -id --name=nginx \
-p 80:80 \
-p 8085:8085 \
-p 443:443 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/cert:/etc/nginx/cert  \
-d nginx

这种配置需要重



济南服务

命令  描述
docker pull nginx   下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest )
docker pull nginx:xxx   下载指定版本的Nginx镜像 (xxx指具体版本号)

# 创建挂载目录
mkdir -p /docker/nginx/conf
mkdir -p /docker/nginx/log
mkdir -p /docker/nginx/html


# 生成容器
# 将容器nginx.conf文件复制到宿主机
# 将容器conf.d文件夹下内容复制到宿主机
# 将容器中的html文件夹复制到宿主机
docker run --name nginx -p 80:80 -d nginx

docker cp nginx:/etc/nginx/nginx.conf /data/docker/nginx/conf/nginx.conf

docker cp nginx:/etc/nginx/conf.d /data/docker/nginx/conf/conf.d

docker cp nginx:/usr/share/nginx/html /data/docker/nginx/


# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx

# 删除正在运行的nginx容器
docker rm -f nginx

12、自动启动

docker的--restart选项可以实现自动启动,其可选参数包括:

  • no,不自动重启容器。默认。

  • on-failure 容器退出状态不为0时,重启容器。可以指定最多重启次数。

  • unless-stopped 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时未启动的容器。

  • always 无论何时,都保持容器处于启动状态。配合docker服务可以实现开机自动启动。

    sudo systemctl enable docker.service
    docker run -d --restart=always nginx

如果nginx容器已经启动,可以使用docker update更新。

复制代码
docker update --restart=always nginx
相关推荐
QQ__17646198249 分钟前
Ubuntu系统创建新用户与删除用户
linux·运维·服务器
渣渣盟40 分钟前
Linux邮件服务器快速搭建指南
linux·服务器·开发语言
6极地诈唬42 分钟前
【PG漫步】DELETE不会改变本地文件的大小,VACUUM也不会
linux·服务器·数据库
ArrebolJiuZhou42 分钟前
00 arm开发环境的搭建
linux·arm开发·单片机·嵌入式硬件
谷雨不太卷1 小时前
Linux_文件权限
linux·运维·服务器
无泪无花月隐星沉2 小时前
uos server 1070e lvm格式磁盘扩容分区
linux·运维·uos
食咗未2 小时前
Linux USB HOST EXTERNAL STORAGE
linux·驱动开发
食咗未2 小时前
Linux USB HOST HID
linux·驱动开发·人机交互
Xの哲學2 小时前
Linux SLAB分配器深度解剖
linux·服务器·网络·算法·边缘计算
HPYON3 小时前
【docker】CentOS安装docker失败,一直提示yum没有docker仓库
docker·容器·centos