Nginx反向代理简介,作用及配置;Nginx负载均衡简介,作用及配置;
一,Nginx反向代理
1.1简介
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
1.2作用
-
通过反向代理可以增加安全性,减少后台服务被攻击的隐患
-
通过缓存的方式可以增加静态资源响应效率
-
通过反向代理实现负载均衡
1.3基础配置
配置文件在conf目录下的nginx.config文件中。
其中内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server { #--只需要关注server的配置--
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
} #--只需要关注server的配置--
}
listen:监听哪个端口
server_name:给这个服务取一个名字
location:反向代理的配置
error_page:错页面
root:静态资源的根目录
index:欢迎页,默认的请求页面
1.4介绍location指令
做反向代理映射地址的
location [ = | ~ | ~* ] uri {
}
=:精确匹配,请求地址必须和uri相同才会进入这个location
~:模糊匹配,只要符合uri规则就会进入了这个location
~*:不区分大小写的模糊匹配
1.5反向代理案例
1.51实现nginx代理百度
在nginx.config中修改server中内容如下:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://www.baidu.com;
}
}
修改完配置文件后,要重新加载一下配置文件
./nginx -s reload
地址栏输入虚拟机登录端口号访问nginx
显示的是百度
1.52实现nginx代理tomcat
注意修改端口号
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.1.173:8080;
}
}
}
创建一个html页面:
粘贴到tomcat/webapps/abc文件夹里去:
访问一下123.html页面。
补:proxy_pass:反向代理的地址。这个配置的地址最后可以用“/”结尾的,也可以不用“/”结尾,有很大区别。有正斜杠代理时会代理到根目录。
请求地址:http://192.168.1.173/abc/123.html
没有正斜杠时,代理后的地址是http://192.168.1.173:8080/abc/123.html
proxy_pass http://192.168.1.173:8080;
有正斜杠时,代理后的地址是http://192.168.1.173//123.html,由此会导致404问题
proxy_pass http://192.168.1.173:8080/;
二,Nginx负载均衡
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
(Nginx能做负载均衡,但是并不是主力军。)
【负载:就是这个服务器压力有多大;
均衡:就是把这份压力平坦下去,把它分给多个服务器,这样原本是给一台服务器上的压力,现在分给多台服务器了】
2.1、配置hello集群
创建一个【java项目】的springboot工程:
打包(install):
打包成功后,在target目录下会生成.jar的文件。(打包两个输出不同的项目)
虚拟机创建新目录:
通过命令启动两个服务,注意两个服务端口号要不同,并且要能通过请求区分出两个服务。
java -jar XXX.jar
2.2、配置nginx负载均衡
和反向代理是同一个配置文件。
注意修改为自己的端口号
upstream:负载均衡配置,内部可以配多个server
proxy_pass:代理到hw这个负载均衡配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream hw { ## 负载均衡配置
server 192.168.1.173:88;
server 192.168.1.173:99;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://hw;
}
}
}
修改完配置文件后,要重新加载一下配置文件
./nginx -s reload
配置成功后只需要打开一个网页端口,点击刷新可以切换两个项目内容,即配置成功。
2.3nginx的负载均衡的模式
1.轮询:平均分配,逐一做负载,是默认的方式
2.权重:可以设置一个权重值,让某一个服务被分配做负载的比例增大
【访问的时候,显示88 端口1次,99端口两次】(不够智能)
upstream hw {
server 192.168.1.173:88 weight=1;
server 192.168.1.173:99 weight=2;
}
3.ip_hash:对发送请求过来的ip地址进行hash计算,得到值会分配给upstream中配置的服务,且相同的ip访问计算的结果相同,就会被分配到同一个服务中。【这样做的好处是,实现session共享的问题,可以保证同一个ip地址不会被负载均衡到其他项目里,而导致拿不到session。】
upstream hw {
ip_hash;
server 192.168.1.173:88;
server 192.168.1.173:99;
}
同一个IP,无论访问多少次,都是显示同一个内容。(不够智能)
原文地址:https://blog.csdn.net/weixin_72637723/article/details/142477562
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!