Nginx反向代理、负载均衡、动静分离、缓存、压缩、防盗链、跨域访问
一、反向代理
1、在192.168.189.130机器启动tomcat服务,http://192.168.189.130:8080/ 访问服务正常
2、在192.168.189.131机器配置nginx
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://192.168.189.130:8080;
root html;
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 html;
}
3、启动nginx服务,http://192.168.189.131/ 能够访问,这就完成了一个最简单的反向代理
二、负载均衡
1、负载均衡使用的是nginx的http upstream模块,语法:server address;
2、负载均衡策略或算法:默认使用轮询算法,可以使用ip_hash 或者 权重轮询
3、为了配置清晰,在nginx配置文件中http模块引入额外配置
http {
include mime.types;
include extra/*.conf;
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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# server {
# listen 80;
# server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
目录:
/root/data/program/nginx/conf/extra
配置文件proxy_demo.conf
#负载均衡模块
upstream tomcat {
#最大失败2次,失败后在60秒内不再转发到该机器
server 192.168.189.130:8080 max_fails=2 fail_timeout=60s;
server 192.168.189.132:8080 max_fails=2 fail_timeout=60s;
}
server {
listen 80;
server_name localhost;
location / { proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#性能优化相关
#例:130机器 error、超时、500、503的时候请求转到132
proxy_next_upstream error timeout http_500 http_503;
#连接超时时间
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s; }
}
4、分别在192.168.189.130,192.168.189.132机器上启动tomcat,
然后在/root/data/program/apache-tomcat-8.5.34/webapps/ROOT 下index.jsp页面添加一些标识区分,启动tomcat服务
访问http://192.168.189.131/,可以看到130、132两个服务轮询处理请求
三、动静分离
1、132机器/root/data/program/apache-tomcat-8.5.34/webapps/ROOT目录新建文件夹bak,把除index.jsp外的其他文件(静态资源)移动到bak文件夹

此时访问http://192.168.189.132:8080/发现首页样式没了
2、配置nginx,使用正则表达式,当请求静态资源时从static-resource获取
#负载均衡模块
upstream tomcat {
#最大失败2次,失败后在60秒内不再转发到该机器
#server 192.168.189.130:8080 max_fails=2 fail_timeout=60s;
server 192.168.189.132:8080 max_fails=2 fail_timeout=60s;
}
server {
listen 80;
server_name localhost;
location / { proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#性能优化相关
#例:130机器 error、超时、500、503的时候请求转到132
proxy_next_upstream error timeout http_500 http_503;
#连接超时时间
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s; } location ~ .*\.(js|css|png|svg|ico|jpg)$ {
root static-resource;
}
3、在nginx根目录下创建文件夹static-resource,把tomcat目录下的静态资源文件拷贝到此目录(静态资源文件,不包含jsp)
tomcat静态资源文件地址:/root/data/program/apache-tomcat-8.5.34/webapps/ROOT

4、./nginx -s reload nginx重新加载,此时访问http://192.168.189.131/可以看到当请求转发到192.168.189.132:8080上时,首页样式能够显示
缓存
nginx可以通过expires设置缓存,比如我们可以针对图片做缓存。
在location中设置expires
格式: expires 30s|m|h|d
#负载均衡模块
upstream tomcat {
#最大失败2次,失败后在60秒内不再转发到该机器
# server 192.168.189.130:8080 max_fails=2 fail_timeout=60s;
server 192.168.189.132:8080 max_fails=2 fail_timeout=60s;
}
server {
listen 80;
server_name localhost;
location / { proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#性能优化相关
#例:130机器 error、超时、500、503的时候请求转到132
proxy_next_upstream error timeout http_500 http_503;
#连接超时时间
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s; } location ~ .*\.(js|css|png|svg|ico|jpg)$ {
root static-resource;
expires 1d;
} }
对比设置缓存前,浏览器请求静态资源Response Headers

设置expires 1d;后浏览器多了Expires
压缩
Nginx中提供了一种Gzip的压缩优化手段,可以对后端的文件进行压缩传输,压缩以后的好处在于能够降低文件的大小来提高传输效率
配置信息
Gzip on|off 是否开启gzip压缩
Gzip_buffers 4 16k #设置gzip申请内存的大小,作用是按指定大小的倍数申请内存空间。4 16k代表按照原始数据大小以16k为单位的4倍申请内存。
Gzip_comp_level[1-9] 压缩级别, 级别越高,压缩越小,但是会占用CPU资源
Gzip_disable #正则匹配UA 表示什么样的浏览器不进行gzip
Gzip_min_length #开始压缩的最小长度(小于多少就不做压缩),可以指定单位,比如 1k
Gzip_http_version 1.0|1.1 表示开始压缩的http协议版本
Gzip_proxied (nginx 做前端代理时启用该选项,表示无论后端服务器的headers头返回什么信息,都无条件启用压缩)
Gzip_type text/pliain,application/xml 对那些类型的文件做压缩 (conf/mime.conf)
Gzip_vary on|off 是否传输gzip压缩标识; 启用应答头"Vary: Accept-Encoding";给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
user root;
#user nobody;
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types; include extra/*.conf; default_type application/octet-stream; #配置nginx压缩
gzip on;
gzip_min_length 5k;
gzip_comp_level 3;
gzip_types application/javascript image/jpeg image/svg+xml;
gzip_buffers 4 32k;
gzip_vary on;
压缩前:

压缩后:


四、防盗链
1、设置静态资源只能192.168.189.132访问,其他ip访问返回404
#负载均衡模块
upstream tomcat {
#最大失败2次,失败后在60秒内不再转发到该机器
# server 192.168.189.130:8080 max_fails=2 fail_timeout=60s;
server 192.168.189.132:8080 max_fails=2 fail_timeout=60s;
}
server {
listen 80;
server_name localhost;
location / { proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#性能优化相关
#例:130机器 error、超时、500、503的时候请求转到132
proxy_next_upstream error timeout http_500 http_503;
#连接超时时间
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s; } location ~ .*\.(js|css|png|svg|ico|jpg)$ {
#防盗链
#设置静态资源只能192.168.189.132访问,其他ip访问返回404
valid_referers none blocked 192.168.189.132;
if ($invalid_referer) {
return 404;
}
root static-resource;
expires 1d;
} }

“Referer”请求头为指定值时,内嵌变量$invalid_referer被设置为空字符串,否则这个变量会被置成“1”。
查找匹配时不区分大小写,其中none表示缺少referer请求头、blocked表示请求头存在,但是它的值被防火墙或者代理服务器删除、server_names表示referer请求头包含指定的虚拟主机名
五、跨域请求
环境说明:两台tomcat服务130,132;一台nginx服务131,131nginx代理132tomcat服务,130tomcat服务器请求131上一个json
1、130tomcat index.jsp页面请求json(注意添加jquery.js)


2、132服务添加demo.json

{
"hello":"world"
}
3、No 'Access-Control-Allow-Origin' header is present on the requested resource.

4、nginx配置
upstream tomcat {
#最大失败2次,失败后在60秒内不再转发到该机器
#server 192.168.189.130:8080 max_fails=2 fail_timeout=60s;
server 192.168.189.132:8080 max_fails=2 fail_timeout=60s;
}
server {
listen 80;
server_name localhost;
location / {
# 注释最原始的代理,使用负载均衡
# proxy_pass http://192.168.189.132:8080;
proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#性能优化相关
#例:130机器 error、超时、500、503的时候请求转到132
proxy_next_upstream error timeout http_500 http_503;
#连接超时时间
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
#跨域请求,注释掉130,只代理132
add_header 'Access-Control-Allow-Origin' '*'; #允许来自所有的访问地址
add_header 'Access-Control-Allow-Methods' 'GET,PUT,POST,DELETE,OPTIONS'; #支持的请求方式
add_header 'Access-Control-Allow-Header' 'Content-Type,*'; #支持的媒体类型
}
location ~ .*\.(js|css|png|svg|ico|jpg)$ {
#防盗链
#设置静态资源只能192.168.189.132访问,其他ip访问返回404
valid_referers none blocked 192.168.189.132;
if ($invalid_referer) {
return 404;
}
#130、132两台机器ROOT下静态资源改到bak下,创建static-resource存静态资源
root static-resource;
#nginx缓存配置,Response Headers多了一个Expires
expires 1d;
}
}
5、效果

Nginx反向代理、负载均衡、动静分离、缓存、压缩、防盗链、跨域访问的更多相关文章
- Nginx 反向代理 负载均衡 虚拟主机配置
Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...
- Nginx 反向代理 负载均衡 虚拟主机
Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...
- 十.nginx反向代理负载均衡服务实践部署
期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...
- 【转】Nginx 反向代理 负载均衡 虚拟主机配置
原文:http://www.cnblogs.com/itdragon/p/8059000.html Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代 ...
- Centos7.4 Nginx反向代理+负载均衡配置
Ningx是一款高性能的HTTP和反向代理服务器,配置起来也比较简单. 测试环境: 172.16.65.190 Nginx-反向代理 172.16.65.191 Ningx-Web 172.16.65 ...
- 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现
实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...
- 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现
总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...
- 项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现
目录 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 2.下载编译安装tengine 3.设置代理服务器的配置文件 4.启动tengine服务 5.开启后端的web服务 6.测试 实验二:ng ...
- 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器
Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...
- Centos 7.6配置nginx反向代理负载均衡集群
一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76 nginx负载均衡器 192.168.2.82 web ...
随机推荐
- Android 系统版本和API level的关系表
Android 系统版本和API level的关系表 wiki: https://zh.wikipedia.org/wiki/Android%E6%AD%B7%E5%8F%B2%E7%89%88%E6 ...
- 苹果ios系统无法通过RD Client连接win10服务器远程错误0x00001307
问题描述: 1.RD Client无法远程Windows 10桌面,提示“错误 用户名或密码错误” 之前连接是没有问题的,但是更新了win10系统以后就出现问题了 [解决方法]: 最后找到了原因是因为 ...
- 英语口语练习系列-C02-抱怨
连接到英语口语系列总分类 连接到上一章棒棒的 竹石 郑燮 zhèng xiè 竹石 作者:郑燮 咬定青山不放松,立根原在破岩中. 千磨万击还坚劲,任尔东西南北风. Our team sucks. 我们 ...
- CSS---内外边距
1.内外边距含义 内边距是div边框内的距离.背景色会覆盖内边距,内边距会使宽高变大. 外边距是div边框外的距离.背景色不会覆盖外边距 内外边距都会撑高父元素,外边距会提高div与div之间的距离 ...
- Python开发【内置模块篇】os模块
1.当前路径及路径下的文件 os.getcwd():查看当前所在路径. >>> import os >>> os.getcwd() 'E:\\test' >& ...
- kernel笔记——中断
cpu与磁盘.网卡.键盘等外围设备(相对于cpu和内存而言)交互时,cpu下发I/O请求到这些设备后,相对cpu的处理能力而言,磁盘.网卡等设备需要较长时间完成请求处理. 那么在请求发出到处理完成这段 ...
- Putty中的pscp和psftp的简明用法
用习惯了putty,那是真心的方便啊,putty文件夹下其他的小兄弟也不能忽略啊. 以前的时候,从远程服务器下载个文件用winscp,后来,发现在putty文件夹里好像有一个 pscp和psftp,今 ...
- POJ3686 The Windy's
嘟嘟嘟 刚做费用流,思路完全不对呀-- 应该这么想(应该说敢这么想):这道题的关键在于怎么体现这个玩具是第几个加工的,只有这才能求出他的加工时间(因为加工时间包括等待时间). 但等待时间不好求,因此要 ...
- yum工作原理
yum工作原理 yum是一个RPM包的前端管理工具,在rpm包的依赖关系已经被建成数据库的前提下它能够实现自动查找相互依赖的人rpm包,并从repository中下载互相依赖的rpm包到本地. YUM ...
- Redtiger SQL注入练习(二)
第六关: 点击 click me,构造url:user=1',返回user not found.user=1'',同样. 猜测是数字型注入,构造order by , user=1 order by ...