Docker入门教程-Linux环境安装Nginx及入门使用
介绍
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
安装 Nginx
- 查看可用的 Nginx 版本
访问 Nginx 镜像库地址: https://hub.docker.com/_/nginx?tab=tags。 
可以通过 Sort by 查看其他版本的 Nginx,默认是最新版本 nginx:latest。
- 取最新版的 Nginx 镜像
这里我们拉取官方的最新版本的镜像: 
docker pull nginx:latest
- 查看本地镜像
使用以下命令来查看是否已安装了 nginx: 
docker images
- 运行容器
安装完成后,我们可以使用以下命令来运行 nginx 容器: 
docker run --name nginx-test -p 81:80 -d nginx
参数说明:
--name nginx-test:容器名称。
-p 81:80: 端口进行映射,将本地 81端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。
- 安装成功
最后我们可以通过浏览器可以直接访问 81 端口的 nginx 服务:

 
Nginx实现负载均衡
Nginx经过线上各种网络环境验证,能够帮你隔离各种复杂的网络环境,轻松支持10000+的同时在线连接数,同时拥有多种成熟的负载均衡策略,能够方便横向拓展后端服务。下面我们说一说Nginx负载均衡策略,就各种负载均衡策略在实际项目中如何应用,这里只示例默认的负载均衡策略如何使用,其他方式会在后续文章中详细介绍,尽情期待。
Nginx负载均衡策略分类
基于轮询方式
轮询是最基本的配置方法,它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。依据IP(ip_hash)分配
指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
- 基于权重(weight)分配
 
每个upstream下服务会有一个权重(weight)配置,这个权重就是请求派发的概率,权重越大请求派发给服务的机会越大,可以根据服务资源情况分配权重。
- 最少连接(least_conn)方式
 
把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是有些请求占用的时间很长,会导致其所在的后端负载较高,这种情况下最少连接方式分配方式就可以达到更好的负载均衡效果。
Nginx实现负载均衡实际应用
注意:这里还是基于在Docker环境中使用,部署nginx服务的服务器ip为180.8.2.99,需提前部署两个普通的Web服务,我这里在另外一台服务器180.8.2.222上部署了端口分别为8001和8002的springboot服务,效果如下图
- 在宿主机/var/nginx目录下创建Nginx配置文件,内容如下:
 
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    upstream upstream_name{
        server 180.8.2.222:8001;
        server 180.8.2.222:8002;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://upstream_name;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}
- 运行容器
 
docker run   --name nginx81   -d -p 81:80   -v /var/nginx/nginx.conf:/etc/nginx/nginx.conf  nginx
- 验证
 
浏览器访问:http://180.8.2.99:81/test
正常情况会轮流出现如下界面


这样,利用部署在Docker中的Nginx服务就实现负载均衡功能啦~
参考
- https://www.runoob.com/docker/docker-install-nginx.html
 - https://blog.csdn.net/xungen/article/details/90517525
 
结语
欢迎关注微信公众号『码仔zonE』,专注于分享Java、云计算相关内容,包括SpringBoot、SpringCloud、微服务、Docker、Kubernetes、Python等领域相关技术干货,期待与您相遇!

Docker入门教程-Linux环境安装Nginx及入门使用的更多相关文章
- Linux环境安装nginx
		
安装需要以下工具: yum -y install gcc gcc-c++ autoconf automake 模块依赖: yum -y install zlib zlib-devel openssl ...
 - Linux环境安装Nginx步骤
		
centos7平台编译环境使用如下指令安装: 1. 安装make: yum -y install gcc automake autoconf libtool make 2. 安装g++: yum -y ...
 - Linux环境安装Nginx详细步骤
		
1.yum解决编译nginx所需的依赖包,之后你的nginx就不会报错了yum install gcc patch libffi-devel python-devel zlib-devel bzip ...
 - 【Linux】Linux上安装Nginx
		
本文介绍Linux环境安装Nginx,这里用的Linux系统是CentOS 7.2. 1. 从Nginx官网下载Nginx.这里用的版本为:1.13.6. 2. 将下载下来的Nginx上传到Linux ...
 - Linux 环境安装 Node、nginx、docker、vsftpd、gitlab
		
Linux 环境安装 centos7 # 更新yum yum update -y 0. 防火墙 firewalld 新入的JD云服务器,发现防火墙默认是关闭的. # 查看防火墙状态 systemctl ...
 - 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0 +VS 2013 开发环境配置
		
图片太多,具体过程参照: [OpenCV入门教程之一] 安装OpenCV:OpenCV 3.0.OpenCV 2.4.8.OpenCV 2.4.9 +VS 开发环境配置 说下我这边的设置: 选择deb ...
 - JavaWeb入门——在Linux环境下安装Tomcat服务器
		
JavaWeb入门——在Linux环境下安装Tomcat服务器 摘要:本文主要学习了如何在Linux环境下安装Tomcat服务器. 准备工作 检查Java环境变量 检查系统是否配置了Java的环境变量 ...
 - Java入门——在Linux环境下安装JDK并配置环境变量
		
Java入门——在Linux环境下安装JDK并配置环境变量 摘要:本文主要说明在Linux环境下JDK的安装,以及安装完成之后环境变量的配置. 使用已下载的压缩包进行安装 下载并解压 在Java的官网 ...
 - 【转】linux 编译安装nginx,配置自启动脚本
		
linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...
 
随机推荐
- 【IJCAI2020】Split to Be Slim: An Overlooked Redundancy in Vanilla Convolution
			
Split to Be Slim: An Overlooked Redundancy in Vanilla Convolution, IJCAI 2020 论文地址: https://arxiv.or ...
 - java基础(七)--基本类型转换
			
一.转换规则 1.类型转换的原则是: 小容量可以自动转成大容量,大容量转成小容量,需要强制转换,有些类型之前不能转换 判断以下语句是否符合要求 2.默认的识别数字 整数默认->int 浮点数默认 ...
 - 浅析protobuf应用
			
Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化.反序列化,常用于RPC 系统(Remote Procedure Call Protocol Syste ...
 - 自定义placeholder样式
			
::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: #909; } :-moz-placeholder { /* Mozill ...
 - Servlet学习之Tomcat secretRequired配置报错问题
			
Tomcat secretRequired配置问题 在启动Tomcat时,控制台可能会出现IllegalArgumentException异常,即"AJP连接器配置secretRequire ...
 - Maven——软件开发中一个神奇的项目管理工具
			
由于本人是从c++转入从事JAVA工作的 所以很多东西要从头学起,相信有很多跟我一样的人吧,那么我们一起来学习. 今天我们一起来认识下Maven这个工具,很多人可能会问题了,为什么说是工具呢?不是写代 ...
 - 巩固复习(Django最基础的部分_具体查看官方文档)
			
Django学习路1 1.脚本不能随便运行,没准 linux 运行完就上不去了 2.pip 在 linux 上 写 pip3 同理 python 写为 python3 3.在 pycharm 上安装库 ...
 - bzoj 2225 [Spoj 2371]Another Longest Increasing
			
这道题 连续上升的三元组 且已经按照第一维排好序了. 直接上CDQ分治即可 当然也是可以2-Dtree解决这个 问题 但是感觉nlog^2 比nsqrt(n)要快一些.. 算是复习一发CDQ分治吧 也 ...
 - 从别人的代码中学习golang系列--03
			
这篇博客还是整理从https://github.com/LyricTian/gin-admin 这个项目中学习的golang相关知识. 作者在项目中使用了 github.com/casbin/casb ...
 - Java实现短信验证码
			
前言 本人使用的是阿里短信服务,一开始尝试了许多不同的第三方短信服务平台,比如秒滴科技.梦网云通讯.当初开始为什么会选择这两个,首先因为,他们注册就送10元钱(#^.^#),但是后来却发现他们都需要认 ...
 
			
		
