一、反向代理

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反向代理、负载均衡、动静分离、缓存、压缩、防盗链、跨域访问的更多相关文章

  1. Nginx 反向代理 负载均衡 虚拟主机配置

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  2. Nginx 反向代理 负载均衡 虚拟主机

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  3. 十.nginx反向代理负载均衡服务实践部署

    期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...

  4. 【转】Nginx 反向代理 负载均衡 虚拟主机配置

    原文:http://www.cnblogs.com/itdragon/p/8059000.html Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代 ...

  5. Centos7.4 Nginx反向代理+负载均衡配置

    Ningx是一款高性能的HTTP和反向代理服务器,配置起来也比较简单. 测试环境: 172.16.65.190 Nginx-反向代理 172.16.65.191 Ningx-Web 172.16.65 ...

  6. 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

    实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...

  7. 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现

    总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...

  8. 项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现

    目录 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 2.下载编译安装tengine 3.设置代理服务器的配置文件 4.启动tengine服务 5.开启后端的web服务 6.测试 实验二:ng ...

  9. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  10. Centos 7.6配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

随机推荐

  1. Oracle 统计信息收集

    官网网址参考: https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_stats.htm#CIHBIEII https://docs.ora ...

  2. SQL Server 2008初次启动

    一.关于安装 SQL Server 数据库的安装,经过自己的安装,总体还是比较容易,没有太多难度,安装包在网上也有很多,在此,就跳过安装的这一步. 二.初次启动SQL Server 安装完成数据库后, ...

  3. window批处理修改计算机名

    一.需要重启 @echo offset /p pcnanme=请输入计算机的名字:reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Com ...

  4. 【Python实战】使用Python连接Teradata数据库???未完成

    1.安装Python 方法详见:[Python 05]Python开发环境搭建 2.安装Teradata客户端ODBC驱动 安装包地址:TTU下载地址 (1)安装TeraGSS和tdicu(ODBC依 ...

  5. tian

    上次后来没继续在微信上聊,是因为快过年了,想趁那段时间结合年假做点东西.接下来阳历三四月份就受美国制裁.结果接下来制裁.fang. 16年的那次主要是生气,在一块儿 另外经济上也有问题. 我也想过不再 ...

  6. Kafka 0.11.0.0 实现 producer的Exactly-once 语义(英文)

    Exactly-once Semantics are Possible: Here’s How Kafka Does it I’m thrilled that we have hit an excit ...

  7. android 获取通话记录

    在manifest添加以下权限<uses-permission android:name="android.permission.READ_CALL_LOG" />&l ...

  8. 微信小程序测试

    1.连接真机,微信已经登录过了 2.代码: 3.appium自带的识别工具 4.设置工具连接设备的方式 参考资料: https://www.cnblogs.com/yoyoketang/p/91449 ...

  9. Laravel 和 Spring Boot 两个框架比较创业篇(一:开发效率)

    我个人是比较不喜欢去正儿八经的比较两个框架的,这样没有意义,不过欲善其事先利其器! 技术是相通的,但是在某个特定的领域的某个阶段肯定有相对最适合的一个工具! 这里比较不是从技术角度比较,而是从公司技术 ...

  10. 数据接口测试工具 Postman 介绍

    此文介绍好用的数据接口测试工具 Postman,能帮助您方便.快速.统一地管理项目中使用以及测试的数据接口. 1. Postman 简介 Postman 一款非常流行的 API 调试工具.其实,开发人 ...