在Docker下部署Nginx

在Docker下部署Nginx,包括:

  • 部署一个最简单的Nginx,可以通过80端口访问默认的网站
  • 设置记录访问和错误日志的路径
  • 设置静态网站的路径
  • 通过proxy_pass将HTTP请求反向代理到nodejs Web App
  • 设置HTTPS

如果你还没有安装Docker环境,可参考在Docker中运行Node.js的Web应用

最简单的命令,让Nginx跑起来

命令如下:

1
$ sudo docker run -it -p 80:80 dockerfile/nginx

如果是第一次,下载nginx镜像需要点时间。

然后,可以通过浏览器根据地址访问到一个默认的网页,说明Nginx成功跑起来了。

设置记录访问和错误日志

Nginx有2个日志:

  1. access.log,记录每个HTTP请求信息
  2. error.log,记录Nginx运行中的错误,用于排错

运行如下命令:

1
$ sudo docker run -it -p 80:80  -v `pwd`/logs:/var/log/nginx dockerfile/nginx

这个命令会在当前目录下创建logs目录,存放access.log和error.log。

设置静态网站路径

需要创建目录:

  • config,目录下放一个文件,名为server,Nginx静态网站配置文件
  • www,目录下放html文件,比如index.html

server文件:

1
2
3
4
5
6
7
8
server {
listen 80; root /www;
index index.html index.htm; server_name localhost;
}

命令如下:

1
sudo docker run -it -p 80:80 -v `pwd`/www:/www -v `pwd`/config:/etc/nginx/sites-enabled  -v `pwd`/logs:/var/log/nginx dockerfile/nginx

解释一下:

  • -vpwd/www:/www,将当前路径下的www目录设置为/www,和server配置的路径对应
  • -vpwd/config:/etc/nginx/sites-enabledserver文件的本地路径,映射到docker容器的nginx配置路径

设置反向代理到Nodejs Web App

需要先能将Nodejs的容器跑起来,然后再考虑怎样通过Nginx的反向代理。

可参见在Docker中运行Node.js的Web应用

假设我有个express.js项目,在当前目录下的webapp目录中,使用docker命令类似这样:

1
sudo docker run -d -p 3000:3000 --name ProtoWebApp -v `pwd`/webapp:/webapp -w /webapp  node npm start

然后,将前面例子中config目录下的server文件做点改动:

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80; #root /www;
#index index.html index.htm; server_name localhost; location / {
proxy_pass http://localhost:3000;
}
}

之后,用下面的命令将nginx跑起来:

1
sudo docker run -it -p 80:80 --link ProtoWebApp:localhost -v `pwd`/config:/etc/nginx/sites-enabled  -v `pwd`/logs:/var/log/nginx dockerfile/nginx

设置HTTPS

只需在运行nginx容器的时候设置SSL的路径:-v <certs-dir>:/etc/nginx/certs

当然,nginx首先要设置,参见配置HTTPS服务器

在Docker下部署Nginx的更多相关文章

  1. 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群

    庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介      前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...

  2. 设想 Docker 下部署 KVM

    设想 Docker 下部署 KVM 一.安装 $ yum -y install kvm # kvm base , must $ yum -y install libvirt -y # libvirtd ...

  3. debian7下部署nginx服务器

    笔者是在vmware中的Debian7下部署nginx服务器,采用离线部署方式.过程如下: 1.准备好需要的离线安装包 nginx-1.6.2.tar.gz,pcre-8.34.tar.gz,open ...

  4. Docker Compose部署 nginx代理Tomcat集群

    一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...

  5. 阿里云服务器安装Docker并部署nginx、jdk、redis、mysql

    阿里云服务器安装Docker并部署nginx.jdk.redis.mysql 一.安装Docker 1.安装Docker的依赖库 yum install -y yum-utils device-map ...

  6. docker stack 部署nginx

    =============================================== 2018/7/29_第1次修改                       ccb_warlock == ...

  7. docker - compose 部署 Nginx

    主要介绍 docker 中 Nginx 的部署及项目目录挂载券的方法.docker 中部署一个服务,有三种方法,分别是 docker run.Dockerfile.docker-compose . 下 ...

  8. 利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_165 上一篇文章:Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像,是在 ...

  9. Linux运维之docker虚拟化部署nginx

    一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...

随机推荐

  1. extjs6.0点击grid一行数据显示在一端的form中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. ASP.NET多线程下使用HttpContext.Current为null解决方案

    多线程或者异步调用中如何访问HttpContext? 前面我还提到在APM模式下的异步完成回调时,访问HttpContext.Current也会返回null,那么此时该怎么办呢? 答案有二种:1. 在 ...

  3. 用高德地图API 通过详细地址获得经纬度

    http://cloud.sinyway.com/Service/amap.html http://restapi.amap.com/v3/geocode/geo?key=xxxxxxxxxxxxxx ...

  4. Spring远端调用的实现-Spring Http调用的实现

    1:Spring Http设计思想 最近在研究公司自己的一套rpc远程调用框架,看到其内部实现的设计思想依赖于spring的远端调用的思想,所以闲来无事,就想学习下,并记录下. 作为spring远端调 ...

  5. mina编解码(摘录)

    一.Mina对编解码的支持 我们知道网络通讯过程实际是对二进制数据进行处理的过程,二进制数据是计算机认识的数据.对于接收到的二进制数据我们需要将其转换成我们所熟悉的数据格式,此过程称为解码(decod ...

  6. 使用jquery.validate.js实现boostrap3的校验和验证

    使用jquery.validate.js实现boostrap3的校验和验证 boostrap3验证框架 jquery.validate.js校验表单 >>>>>>& ...

  7. PHP四种传参方式

    test1界面: <html> <head> <title>testPHP</title> <meta http-equiv = "co ...

  8. PHP获得header头进行分析

    学web的人都知道,要深刻的理解就一定要对HTTP协议有深刻的理解,这样你才能理解整个运行的流程,有些功能你才能理解应该 如何去实现,比如:仿盗链啊,定义IP后切换页面语种的版本啊,等等, 这里就来对 ...

  9. 分享一下常用的hosts列表

    #以下的hosts能够保证基本的谷歌服务不受影响,其他网站则不一定能够顺利访问,Youtube视频无法播放,但是可以顺利上传视频 #Thanks smarthosts  ,  老夏 ,Humorce  ...

  10. 无法加载协定为“ServiceReference1.ReportWsSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。

    前言 引用websevice时,有时会出现如下错误: 异常详细信息: System.InvalidOperationException: 无法加载协定为“ServiceReference1.Repor ...