docker安装nginx,配置SSL
nginx安装
下载镜像并测试
1.docker pull nginx
2.docker images nginx 查看我们拉取到本地的nginx镜像IMAGE ID
3.首先测试下nginx镜像是否可用,使用docker run -d --name mynginx -p 80:80 imgae ID创建并启动nginx容器
将nginx容器内部配置文件挂载到主机
将nginx容器内部配置文件挂载到主机,之后就可以在主机对应目录修改即可。适合频繁修改,复杂使用的情况
1.在主机/mnt目录下执行 mkdir -p ./nginx/{conf,html,logs}创建挂载目录
2.将容器内的nginx.conf与default.conf文件分别拷贝到主机/mnt/nginx和/mnt/nginx/conf下,分别执行
docker cp ef:/etc/nginx/nginx.conf
dokcer cp ef:/etc/nginx/conf.d/default.conf ./conf/
cp 命令代表复制
ef是我们nginx容器的ID,/etc/nginx/nginx.conf 是容器内部nginx.conf 路径
3.执行docker stop 容器ID 命令停止刚刚创建的nginx容器,b3是容器Id,然后执行docker rm 容器ID 移除容器。
4.执行下方命令重建容器
docker run -d --name mynginx -p 80:80 -p 443:443 -v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/nginx/logs:/var/log/nginx -v /mnt/nginx/html:/usr/share/nginx/html -v /mnt/nginx/conf:/etc/nginx/conf.d -v /mnt/nginx/ssl:/ssl --privileged=true 容器ID
-v 挂载目录,格式 -v: 表示将主机目录与容器目录之间进行共享,
--privileged=true 容器内部对挂载的目录拥有读写等特权
5.这时我们在容器的挂载 /mnt/nginx/html目录下创建index.html,内容随便写上hello docker nginx,再次访问主机IP
到这里就大功告成了!
需要注意的:我们在挂载目录的操作,都实际会映射到容器内部,写配置文件的时候一定要注意路径问题!!(我在配置SSL的时候浪费了很长的时间不清楚最后是什么原因,在配置SSL文件路径的时候一定要写对应的docker容器内部地址,否则会找不到。)
贴一个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 mime.types;
default_type application/octet-stream;
sendfile on;
gzip on;
client_max_body_size 10m;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream tomcat1 {
server 172.17.0.1:8080;
}
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name www.xxx.com;
#证书文件名称
ssl_certificate /ssl/xxx.crt;
#私钥文件名称
ssl_certificate_key /ssl/xxx.key;
#ssl_session_cache shared:SSL:5m;
ssl_session_timeout 5m;
#keepalive_timeout 70;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location /html{
#alias配置静态vue项目的时候用,之前用了root一直没法访问浪费我1天时间才找到问题所在
#root和alias的区别(根据实际需求选择用哪个)
#root会在目录后加上location后的路径,在本示例就是/usr/share/nginx/html/dist/html才能正确访问到
#alias就是绝对地址,在本示例把前端放 /usr/share/nginx/html/dist 下就可以
#注意:此处一定要写挂载目录对应的docker容器内的路径,而不是物理机的路径
#例如:物理机/mnt/nginx/html 挂载到docker容器内的usr/share/nginx/html
#你把vue项目放到/mnt/nginx/html下的时候,一定不能直接写这个目录,而要写对应容易的目录usr/share/nginx/html
alias /usr/share/nginx/html/dist;
index index.html;
}
location / {
proxy_ssl_server_name on;
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#root html;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://tomcat1;
#index index.html index.htm;
}
}
server{
listen 80;
server_name www.xxx.com;
location / {
proxy_read_timeout 360s;
proxy_pass http://tomcat1;
proxy_set_header Host $host:$server_port;
proxy_http_version 1.1;
#websocket用
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
docker安装nginx,配置SSL的更多相关文章
- docker安装和配置nginx
配置nginx docker配置nginx 本机ip是192.168.0.200 docker pull nginx 配置nginx主机 vi /root/docker/nginx/nginx01.c ...
- Docker安装Nginx(含:Windows启动、重启、停止)
Docker安装Nginx #docker pull nginx:latest (第一次启动Docker-Nginx) #docker run --detach \ --publish 80:80 \ ...
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...
- nginx配置ssl加密(单双向认证、部分https)
nginx配置ssl加密(单双向认证.部分https) nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始 ...
- Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)
准备工作 1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796. ...
- Linux、Docker安装Nginx
Docker安装Nginx #docker images nginx #docker search nginx #docker pull nginx #docker run -it -p 8084:8 ...
- [转帖]nginx配置ssl加密(单/双向认证、部分https)
nginx配置ssl加密(单/双向认证.部分https) https://segmentfault.com/a/1190000002866627 nginx下配置ssl本来是很简单的,无论是去认证 ...
- Nginx配置SSL证书实现https访问「浏览器未认证」
http 和 https 介绍 http:应用最广泛的一种网络协议,是一个B/S的request和response的标准,用于从www服务器传输超文本到本地浏览器的传输协议. https:以安全为目标 ...
- Nginx配置SSL报错 nginx: [emerg] unknown directive "ssl"
Nginx配置SSL报错 nginx: [emerg] unknown directive "ssl" 出现如图所示错误,处理办法如下 去nginx解压目录下执行 ./co ...
- 阿里云CentOS7.3服务器通过Docker安装Nginx
前言 小编环境: 阿里云CentOS7.3服务器 docker 下面分享一次小编在自己的阿里云CentOS7.3服务器上使用Docker来安装Nginx的一次全过程 温馨小提示: 如果只是希望单纯使用 ...
随机推荐
- 如何实现多个接口Implementing Multiple Interface
4.实现多个接口Implementing Multiple Interface 接口的优势:马克-to-win:类可以实现多个接口.与之相反,类只能继承一个超类(抽象类或其他类). A class c ...
- java中求一下2008年5月31日, 往前倒30天是哪天?
题目9: 2008年5月31日, 往前倒30天是哪天? import java.util.*; public class Test { public static void main(Str ...
- FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发
之前我们分享了FastAPI(七十一)实战开发<在线课程学习系统>接口开发-- 查看留言,这次我们分享留言列表开发. 列表获取,也需要登录,根据登录用户来获取对应的留言.逻辑梳理如下. 1 ...
- php怎么向上取整以5为界
public function test(){ $number = 52093; var_dump( $this->roundNumberVariant( ( int ) $number ) ) ...
- Go 框架学习之旅 ① 深入解析 net/http 启动服务的层级逻辑
Web Server. net/http 标准库怎么学. 库函数. 结构定义. 结构函数. 思维导图解析HTTP服务端. 层级逻辑. 创建框架的Server结构. OSI参考模型. TCP/IP五层模 ...
- signed integer overflow整数溢出
整数越界情况 1. 数组下标越界, 大于N或者小于0 2. 数字过大,可以选择取个模,或者换long long, double 我笑了 还有一个暂时没有好的解决方法的:string s:cin/输入 ...
- Codeforces Round #704 (Div. 2), problem: (C) Maximum width还是要多学习
Problem - C - Codeforces 看清题目要求, 最重要部分在第二段. 大佬最后给出的代码果然简单, 思路简单化, 未必非要把答案在一个大括号里全部完成, 两个指针同时跑,中间加了一堆 ...
- 《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)
1.简介 上一篇宏哥介绍是如何使用logback将日志输出到控制台中,但是如果需要发给相关人需要你拷贝出来,有时候由于控制台窗口的限制,有部分日志将会无法查看,因此我们还是需要将日志输出到文件中,因此 ...
- go学习第一课--语法基础
一.hello world 新建文件helloworld.go package main import "fmt" func main() { fmt.Println( ...
- Python学习-Day1(Typora软件与计算机)
学习总括 Typora软件介绍(markdown语法) 相关拓展知识 文件的后缀名是什么? 什么是语言? 什么是编程语言? 什么是编程?(程序员写代码的本质) 计算机的五大组成部分 计算机的本质 计算 ...