1、什么是Nginx
Nginx
是⼀款⾼性能的
http
服务器
/
反向代理服务器及电⼦邮件(
IMAP/POP3
)代理服务器。由俄罗斯 的程序设计师伊⼽尔·
⻄索夫(
Igor Sysoev
)所开发,官⽅测试
nginx
能够⽀⽀撑
5
万并发链接,并且 cpu、内存等资源消耗却⾮常低,运⾏⾮常稳定。
2.Nginx应⽤场景:
1
、
http
服务器。
Nginx
是⼀个
http
服务可以独⽴提供
http
服务。可以做⽹⻚静态服务器。
将
静态资源
上传到服务器的
/usr/local/nginx/html
下即可访问
2
、虚拟主机。可以实现在⼀台服务器虚拟出多个⽹站。例如个⼈⽹站使⽤的虚拟主机。
在作为http服务器的基础上通过端口绑定或域名绑定实现在一台服务器上访问不同的网站
3
、反向代理,负载均衡。当⽹站的访问量达到⼀定程度后,单台服务器不能满⾜⽤户的请求时,需要⽤ 多台服务器集群可以使⽤ nginx
做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器 负载⾼宕机⽽某台服务器闲置的情况。
虚拟主机之端口绑定
1.docker 容器拉取nginx镜像
2.创建容器挂载目录,在挂载目录中编辑nginx的基础配置文件
# 在/root⽬录下创建nginx⽬录⽤于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf⽂件,粘贴下⾯内容
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024; }
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf; #读取conf.d下的任意conf文件(每个容器的配置文件)
}
3.端口映射和目录映射创建nginx容器:(3个端口号演示端口绑定)
docker run -id --name=c_nginx \
-p 80:80 \
-p 81:81 \
-p 82:82 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
4.在~/nginx/conf.d/创建**.conf文件(这里以80.conf为例),在这个文件里配置每个端口号的访问路径
server {
listen 80; # 监听的端⼝
server_name localhost; # 域名或ip
location / { # 访问路径配置
root /usr/share/nginx/html;# 根⽬录
index index.html index.htm; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}
}
server {
listen 81; # 监听的端⼝
server_name localhost; # 域名或ip
location / { # 访问路径配置
root /usr/share/nginx/index;# 根⽬录
index index.html index.htm; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}
}
server {
listen 82; # 监听的端⼝
server_name localhost; # 域名或ip
location / { # 访问路径配置
root /usr/share/nginx/regist;# 根⽬录
index regist.html; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}
}
5.往容器里的访问路径/usr/local/nginx/**下里面放入静态资源文件,例(/usr/share/nginx/regist)
(思路:可以进容器内新建或在容器外建好复制到容器内,这里演示在容器外复制)
mkdir regist
cd regist #然后写入或放入静态资源文件
cd ../
docker cp ./regist/ c_nginx:/usr/share/nginx/ #复制到容器
进入容器静态资源目录可以看到这3个文件
6.访问ip+端口号,得到三个不同的页面
虚拟主机之域名绑定
其特点是ip相同,端口号相同,域名不同(相同ip配置不同的域名)
本地测试可以修改
hosts
⽂件(
C:\Windows\System32\drivers\etc
)
配置步骤基本同端口绑定,绑定相同的端口,不同的域名就可以
nginx之反向代理(相同的资源保存到不同服务器对应的挂载目录内)
在挂载目录tomcat(3个都放入)下ROOT目录下放入要实现负载均衡的资源
在容器配置文件conf.d中配置负载均衡
这时当用户访问www.huike的的时候,三个tomcat服务就会轮流使用
如果想让某个服务器承受更多访问,使用weight=2变成2倍