当前位置: 首页 > news >正文

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或locahostproxy_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; # 域名或iplocation / { # 访问路径配置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; # 域名或iplocation / { # 访问路径配置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; # 域名或iplocation / { # 访问路径配置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/testserver{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 nginxdocker cp nginx:/etc/nginx/nginx.conf /data/docker/nginx/conf/nginx.confdocker cp nginx:/etc/nginx/conf.d /data/docker/nginx/conf/conf.ddocker 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
http://www.lryc.cn/news/107014.html

相关文章:

  • SpringBoot 整合 Minio
  • 《吐血整理》高级系列教程-吃透Fiddler抓包教程(24)-Fiddler如何优雅地在正式和测试环境之间来回切换-中篇
  • 探索 GPTCache|GPT-4 将开启多模态 AI 时代,GPTCache + Milvus 带来省钱秘籍
  • 纯css实现登录表单动效
  • 【css】外边距margin
  • Cpp8 — 二叉搜索树
  • 【实操教程】如何开始用Qt Widgets编程?(一)
  • openmp和avx配置
  • 18 个JS优化技巧,可以解决 90% 的屎山代码!!!
  • go逆向符号恢复
  • 论文阅读- Uncovering Coordinated Networks on Social Media:Methods and Case Studies
  • 应急响应-Linux
  • 利用spinal的伴生对象简化集成rtl代码过程
  • C# Blazor 学习笔记(7):组件嵌套开发
  • DAY1,C高级(命令,Linux的文件系统,软、硬链接文件)
  • Race竞争型漏洞
  • 基于 FFlogs API 快速实现的 logs 颜色查询小爬虫
  • 【牛客】统计字符
  • 测试|Junit相关内容
  • 19-2.vuex
  • 微信小程序 选择年和月以及回显 使用picker-view组件
  • 助力工业物联网,工业大数据之ST层的设计【二十五】
  • MySQL实践——参数SQL_SLAVE_SKIP_COUNTER的奥秘
  • 小程序面试题
  • 微信小程序接入腾讯云天御验证码
  • Docker build 命令详解
  • 基于Translators的多语言翻译解决方案
  • Unity 性能优化五:渲染模块压力
  • Redis数据库 | 事务、持久化
  • 浅析大数据时代下的视频技术发展趋势以及AI加持下视频场景应用