参考文章:[Docker 技术入门与实战]
Nginx 简介
Nginx 是一款功能强大的开源反向代理服务器,支持 HTTP,HTTPS,SMTP,POP3,IMAP 等协议。它也可以作为负载均衡器,HTTP 缓存或 Web 服务器。Nginx 一开始就专注于高并发和高性能的应用场景。它使用类 BSD 开源协议,支持 Linux,BSD,Mac,Solaris,AIX 等类 Unix 系统,同时也支有 Windows 上的移植版本。
Nginx 特性如下:
- 热部署:采用 master 管理进程与 worker 工作进程的分离设计,支持热部署。在不断服务的前提下,可以直接升级版本。也可以在不停止服务的情况下修改配置文件,更换日志文件等。
- 高并发连接:Nginx 可以轻松支持超过 100k 的并发,理论上支持的并发连接上限取决于机器内存。
- 低内存消耗:在一般的情况下,10k 个非活跃的 HTTP Keep-Alive 连接在 Nginx 中仅消耗 2.5MB 的内存,这也是 Nginx 支持高并发连接的基础。
- 响应快:在正常情况下,单次请求会得到更快的响应。在高峰期,Nginx 可以比其他的 Web 服务器更快地响应请求。
- 高可靠性:Nginx 是一个高可靠性的 Web 服务器,这也是用户为什么选择 Nginx 的基本条件,现在很多的网站都在使用 Nginx,足以说明 Nginx 的可靠性。
使用 Docker Hub 镜像
用户可以使用 docker run
指令直接运行官方 Nginx 镜像:
1 | $ docker run -d -p 80:80 --name webserver nginx |
然后使用 docker ps
指令查看当前运行的容器:
1 | $ docker ps |
目前 Nginx 容器已经在 0.0.0.0:80
端口上,此时可以打开浏览器访问此地址,就可以看到 Nginx 输出的页面。
1.9 版本后的镜像支持 debug
模式,镜像包含 nginx-debug
,可以支持更丰富的 log 信息:
1 | docker run --name my-nginx -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx nginx-debug -g 'daemon off;' |
相应的 docker-compose.yml
配置如下:
1 | web: |
使用 Dockerfile 自定义镜像
首先,新建 index.html
文件
1 | <html> |
新建 Dockerfile
文件,内容如下:
1 | # 设置继承自创建的 sshd-ubuntu 镜像 |
查看 run.sh
脚本文件内容
1 | $ cat run.sh |
创建镜像
1 | docker build -t nginx:stable . |
测试,启动容器,查看内部的 80 端口被映射到本地的 32774 端口:
1 | $ docker run -d -P nginx:stable |
访问本地的 32773 端口:
1 | curl 127.0.0.1:32774 |
再次看到 Nginx 的欢迎页面,说明 Nginx 已经正常启动了。
参数优化
为了能充分发挥 Nginx 的性能,用户可对系统内核参数做一些调整。下面是一份常见的适合运行 Nginx 服务器的内核优化参数:
1 | net.ipv4.ip_forward = 0 |
Nginx 相关资源
Nginx 的相关资源如下:
- Nginx 官网:
https://www.nginx.com
- Nginx 官方仓库:
https://github.com/nginx/nginx
- Nginx 官方镜像:
https://hub.docker.com/_/nginx
- Nginx 官方镜像仓库:
https://github.com/nginxinc/docker-nginx