反向代理 负载均衡 动静分离(动态请求和静态请求)
代理
-
正向代理
如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
例如:开VPN去访问国外的网站,就是正向代理。
-
反向代理
代理服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端的过程,客户端只会得知代理服务器的IP地址,而不知道在代理服务器后面的服务器集群的存在。
安装
官方网站:nginx.org/
Windows
双击 nginx.exe , 一闪而过
在浏览器中访问 localhost
Linux
-
配置Nginx yum存储库
创建
/etc/yum.repos.d/nginx.repo文件sudo vim /etc/yum.repos.d/nginx.repo增加如下内容
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true -
在线安装Nginx
执行以下命令,安装Nginx
sudo yum install nginx -
启动Nginx
执行以下命令启动Nginx
sudo systemctl start nginx执行以下命令查看Nginx运行状态
sudo systemctl status nginx执行以下命令设置开机自启
sudo systemctl enable nginx -
访问Nginx服务默认首页
访问 Welcome to nginx! ,能访问到页面,则证明Nginx运行正常。
Docker
拉取镜像
docker pull nginx
启动Nginx
docker run -d --name=nginx -p 80:80 -v nginx_conf:/etc/nginx -v nginx_html:/usr/share/nginx/html -v nginx_logs:/var/log/nginx nginx
配置
-
配置文件相关
/etc/nginx/:主要的Nginx配置文件目录。/etc/nginx/nginx.conf:Nginx的主配置文件,包含全局配置信息。/etc/nginx/conf.d/:这个目录通常包含一些附加的配置文件,默认情况下主配置文件/etc/nginx/nginx.conf会引入该目录的所有文件。
-
日志相关
/var/log/nginx/:Nginx的日志文件目录,包括访问日志和错误日志。/var/log/nginx/access.log:访问日志,记录所有进入服务器的请求。/var/log/nginx/error.log:错误日志,记录服务器处理过程中的错误信息。
主配置文件
#全局块配置
user nginx; #设置用户和组
worker_processes auto; #进程数量
error_log /var/log/nginx/error.log notice; #日志存放地址
pid /var/run/nginx.pid; #进程ID
#事件块配置
# worker_processes * worker_connections / 2 #静态请求并发数量
# worker_processes * worker_connections / 4 #动态请求并发数量
events {
worker_connections 1024;
}
#配置http服务器,利用它的反向代理功能提供负载均衡支持
http {
#配置nginx支持哪些多媒体类型,可以在conf/mime.types查看支持哪些多媒体类型
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
}
server部分
server {
listen 80;
server_name localhost;
#默认的匹配斜杠/的请求,当访问路径中有斜杠/,会被该location匹配到并进行处理
location / {
#root html;
#index index.html index.htm;
proxy_pass http://serverlist;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
反向代理
server {
listen 9090;
server_name 你的IP;
location / {
proxy_pass https://www.baidu.com/;
}
}
负载均衡
默认是轮询的
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream my{
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name localhost;
location /list {
proxy_pass http://my;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
weight
所谓的负载均衡简单说就是将一台服务原来承受的压力由多台服务器来分配,可以在nginx中实现tomcat集群,通过weight来分配权重。
weight 代表权重,默认为1,权重越高被分配的客户端越多
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如:
# 反向代理配置
upstream server_list{
# 这个是tomcat的访问路径
server localhost:8080 weight=5;
server localhost:9999 weight=1;
}
ip_hash
绑定处理请求的服务器。第一次请求时,根据该客户端的IP算出一个HASH值,将请求分配到集群中的某一台服务器上。后面该客户端的所有请求,都将通过HASH算法,找到之前处理这台客户端请求的服务器,然后将请求交给它来处理。可以解决会话Session丢失的问题
upstream backserver {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:9090;
}
不管刷新多少遍,始终访问的是同一台tomcat服务器
最少连接
将请求分配给连接数最少的服务器。Nginx会统计哪些服务器的连接数最少。
web请求会被转发到连接数最少的服务器上
upstream backserver {
least_conn;
server 127.0.0.1:8080;
server 127.0.0.1:9090;
}