反向代理
暴露的代理服务器,隐藏的真实的服务器。客户端把请求发给反向代理服务器,反向代理服务器进行转发。
负载均衡
将请求分发到不同的服务器上。
动静分离
案例
nginx代理访问到tomcat
- 启动tomcat,地址为http://192.168.2.103:8080。
- 修改redis的配置文件,将访问redis的路径转发到tomcat上。
server {
listen 80; # 对localhost:80监听,对地址进行代理转发
server_name localhost;
location / {
root /usr/share/nginx/html;
proxy_pass http://192.168.2.103:8080; # 转发到tomcat的路径!
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 访问redis的地址,得到tomcat的界面。
nginx根据不同的路径跳转到不同的tomcat下的文件夹
localhost/tomcat1/a.html
localhost/tomcat2/a.html
-----------------
根据/tomcat1或者/tomcat2分别转发到不同的tomcat下
- 配置两个tomcat,在各自的webapps下分别有tomcat1文件夹和tomcat2文件夹,里面存放了a.html显示各自的端口号,分别为8080端口和8081端口。
直接访问tomcat的路径查看,以下图。在192.168.2.103上。
- 配置redis根据请求的路径,tomcat1或者tomcat2,分别转发到不用的tomcat下。
server {
listen 80; # 80端口监听
server_name localhost;
location ~ /tomcat1/ { # 正则匹配,转发到8080的tomcat的tomcat1文件夹
proxy_pass http://192.168.2.103:8080;
}
location ~ /tomcat2/ { # 正则匹配,转发到8081的tomcat的tomcat2文件夹
proxy_pass http://192.168.2.103:8081;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 访问80端口,查看redis的转发是否生效。
负载均衡
有一个项目shop, 分别部署在两台tomcat下,里面有一个a.html文件,显示各自的端口号,分别为8080端口和8081端口。
用redis对其实现负载均衡的操作。
http块中
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;
# 配置服务器列表-两台tomcat
# 默认轮训的方式,可以加权重
# ip_hash 可以根据ip的hash分配,固定访问同一个后端服务器,用于解决session的问题
upstream myserver {
#ip_hash
server 192.168.2.103:8080;
server 192.168.2.103:8081;
# server 192.168.2.103:8080 weight 1;
# server 192.168.2.103:8081 weight 2;
}
include /etc/nginx/conf.d/*.conf;
}
------
server {
listen 80;
server_name localhost;
# 反向代理到之前定义好的myserver服务器地址集合中去
location / {
proxy_pass http://myserver;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
访问redis的监听地址,刷新,得到不同的资源结果。