1 基础知识
– Nginx即英文“engine-x”的发音
– Nginx是用于HTTP、HTTPS、SMTP、POP3和IMAP协议的开源反向代理、负载均衡器、HTTP缓存和Web服务器
– Nginx项目关注高并发、高性能和低内存使用率
– Nginx可运行于Linux、BSD变体、Mac OS X、Solaris、AIX、HP-UX和其他*nix
– Nginx还具有Microsoft Windows的概念验证端口
2 最佳实践
2.1 环境配置
2.1.1 系统环境配置
IP Address = 10.168.0.71
Host Name = any
OS = CentOS 7.6 x86_64
2.1.2 软件环境配置
如果你尚未部署Docker,请按照如下文档部署,
https://www.cmdschool.org/archives/2183
2.2 准备映像
2.2.1 下载Nginx服务器Docker映像
docker pull nginx:1.16.1
其他版本请参阅以下链接,
https://hub.docker.com/_/nginx?tab=tags
2.2.2 查看下载的映像
docker image ls
可见如下显示,
REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.16.1 41e97992fcd8 3 weeks ago 126MB
2.3 托管简单的静态内容
2.3.1 准备静态页面的目录
mkdir -p /var/www/html
2.3.2 创建静态页面
echo www.cmdschool.org > /var/www/html/index.html
2.3.3 运行nginx实例
docker run --name www.cmdschool.org -v /var/www/html/:/usr/share/nginx/html:ro -d nginx:1.16.1
参数“-v”将目录“/var/www/html/”挂载到实例的“/usr/share/nginx/html”目录,使用“ro”参数声明只读,
运行可见如下信息,
1eda3c2776ce9bdf26580a778289d8367225c585b1afb47fd767a4119065622b
2.3.4 查询实例IP
docker inspect www.cmdschool.org
可见如下显示,
[...] "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "e3134a755397c4841912004d8ecff4bf918f6484e9873e3da815946062e87940", "EndpointID": "2685914c67beec16810e9f3704062d49cd028b6b0de8f2e508d08610a3531326", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:03", "DriverOpts": null } } [...]
如上所示,请注意“IPAddress”的值
2.3.5 测试服务
curl http://172.17.0.3
可见如下显示,
www.cmdschool.org
2.4 代理端口到外部
2.4.1 停止并删除服务
docker stop www.cmdschool.org docker rm www.cmdschool.org
2.4.2 增加端口代理定义
docker run --name www.cmdschool.org -v /var/www/html/:/usr/share/nginx/html:ro -p 8080:80 -d nginx:1.16.1
留意“-p”参数的定义
2.4.3 确认代理端口倾听
netstat -antp | grep docker
可见如下显示,
tcp6 0 0 :::8080 :::* LISTEN 112339/docker-proxy
2.4.4 测试端口代理配置
curl http://10.168.0.71:8080
可见如下显示,
www.cmdschool.org
另外,旧的服务一样可以访问,
curl http://172.17.0.3
可见如下显示,
www.cmdschool.org
2.4 数据与配置持久化配置(适合生产环境)
2.4.1 创建配置文件目录
mkdir -p /data/docker/etc/nginx/
2.4.2 复制实例的配置到配置文件目录
docker cp www.cmdschool.org:/etc/nginx/ /data/docker/etc/
2.4.3 停止并删除服务
docker stop www.cmdschool.org docker rm www.cmdschool.org
2.4.4 增加端口代理定义
docker run --name www.cmdschool.org \ -v /var/www/html:/usr/share/nginx/html \ -v /data/docker/etc/nginx:/etc/nginx \ -p 8080:80 \ -d nginx:1.16.1
2.4.5 测试实例的服务
curl http://10.168.0.71:8080
可见如下显示,
www.cmdschool.org
使用如下命令修改页面的内容,
echo nginx.cmdschool.org > /var/www/html/index.html
再次测试实例的服务,
curl http://10.168.0.71:8080
可见如下显示,
nginx.cmdschool.org
参阅文档
===============
https://hub.docker.com/_/nginx
没有评论