做那种网站受欢迎,上海app网站开发价值,现在网站建站的主流语言是什么,华贸中心网站谁做的一、反向代理两种模式
四层反向代理
基于四层的iptcp/upd端口的代理
他是http块同一级#xff0c;一般配置在http块上面。
他是需要用到stream模块的#xff0c;一般四层里面没有自带#xff0c;需要编译安装一下。并在stream模块里面添加upstream 服务器名称#xff0c;…一、反向代理两种模式
四层反向代理
基于四层的iptcp/upd端口的代理
他是http块同一级一般配置在http块上面。
他是需要用到stream模块的一般四层里面没有自带需要编译安装一下。并在stream模块里面添加upstream 服务器名称添加ip地址及端口号。定义server模块里面添加listen 监听端口号server_name 网站主机名proxy_pass 服务器组名称。stream{ upstream fuwu服务器名称{ server IP1:PORT; server IP2:PORT; server IP3:PORT; ........ } server{ listen 监听端口 server_name 网站主机名 proxy_pass 服务器组名称 }}
七层反向代理
基于七层的http/https/mail等应用协议的代理
他是在http模块里面添加以upstream模块在upstream里面定义服务器组名称添加ip端口号权重如果不添加的话默认是1可以在添加一个调度算法。并在http模块里面添加server模块在里面用location来匹配URL路径定义proxy_pass http://服务器组名称用来将以。。。为结尾的请求转发给tomcat服务器集群。并且后端服务器需要获取真实的客户端的ip地址。
http{ upstream 服务器组名称{ server IP1:PORT [weight1 ...]; server IP2:PORT; .......... 调度算法rr轮询/加权轮询least_conn最小连接ip_hash,url_hash,faire;} server { location ~ ...{ #将以***为结尾的请求转发给tomcat服务器集群 proxy_pass http://服务器组名称 #用于后端服务器获取真实的客户端ip地址 proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }}
Nginx 负载均衡模式调度算法 ●rr 轮询 负载均衡模式 每个请求按时间顺序逐一分配到不同的后端服务器如果超过了最大失败次数后max_fails默认1在失效时间内(fail_timeout默认10秒)该节点失效权重变为0超过失效时间后则恢复正常或者全部节点都为down后那么将所有节点都恢复为有效继续探测一般来说rr可以根据权重来进行均匀分配。 ●加权轮询 WRR weight的值越大分配到的访问概率越高主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值达到合理有效的地利用主机资源。 ●least_conn 最少连接 优先将客户端请求调度到当前连接最少的服务器。 ●ip_hash 负载均衡模式 每个请求按访问ip的hash结果分配这样每个访客固定访问一个后端服务器可以解决session的问题但是ip_hash会造成负载不均有的服务请求接受多有的服务请求接受少所以不建议采用ip_hash模式session 共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash使用后端服务器自身通过相关机制保持session同步。 ●fair第三方负载均衡模式 按后端服务器的响应时间来分配请求响应时间短的优先分配。 ●url_hash第三方负载均衡模式 基于用户请求的uri做hash。和ip_hash算法类似是对每个请求按url的hash结果分配使每个URL定向到同一个后端服务器但是也会造成分配不均的问题这种模式后端服务器为缓存时比较好 nginx的会话保持 ## 1.ip_hashurl_hash 基于ip缓存或者url路径的缓存来进行的 ip_hash简单易用但有如下问题 - 当后端服务器宕机后session会丢失 - 来自同一局域网的客户端会被转发到同一个后端服务器可能导致负载失衡 - 不适用于CDN网络不适用于前段还有代理的情况。 ## 2.sticky_cookie_insert 基于客户端的cookie缓存来进行 使用sticky_cookie_insert启用会话亲缘关系这会导致来自同一客户端的请求被传递到一组服务器在同一台服务器。与ip_hash不同之处在于它不是基于IP来判断客户端的而是基于cookie来判断。因此可以避免上述ip_hash中来自同一局域网的客户端和前段代理导致负载失衡的情况。 说明 - expires设置浏览器中保持cookie的时间 - domain定义cookie的域 - path为cookie定义路径 ## 3.后端服务器做session共享来实现会话保持 使用动静分离的原因 nginx比较擅长处理静态页面其效率是tomcat的6倍左右但是nginx不善于处理动态页面。 而tomcat 更擅长处理动态页面。 静态页面内容相对稳定容易被检索同时由于用户浏览是不需要经过程序的处理所以浏览速度最快。但是制作和维护工作量比较大。 当网站内容更新频繁时访问量非常大内容变动频繁时就需要使用动态。但是动态页面需要访问数据库当访问量非常大对程序需要处理的数据量就非常大容易造成网站不稳定甚至瘫痪 因此我们需要使用动静分离来管理网站。 为什么使用负载均衡 动态网站的页面上的信息都必须从数据库中读取,每打开一个页面就读取数据库一次,如果访问网站的人数很多,这会对服务器增加很大的荷载,从而影响这个网站的运行速度。所以我们可以利用负载均衡集群降低服务器的负载。 正向代理和反向代理的区别 ## 正向代理是一个位于客户端和目标服务器之间的服务器为了从目标服务器取得内容客户端向代理发送一个请求并指定目标服务器然后代理向目标服务器转交请求并将获得的内容返回给客户端。代理服务器和客户端处于同一个局域网内。比如说我要访问谷歌于是我就告诉它让它帮我转发。## 反向代理实际运行方式是代理服务器接受网络上的连接请求。它将请求转发给内部网络上的服务器并将从服务器上得到的结果返回给网络上请求连接的客户端 。代理服务器和目标服务器处于同一个局域网内。比如说我要访问taobao对我来说不知道图片、json、css 是不是同一个服务器返回回来的但是我不关心是反向代理 处理的我不知道目标服务器。二、实例部署 七层反向代理和四层反向代理结合 实验准备准备五台虚拟机
提前安装nginx和tomcat 192.168.50.52 tomcat 两个 192.168.50.53 tomcat 192.168.50.56 七层反向代理nginx 192.168.50.58 七层反向代理nginx 192.168.50.57 四层反向代理nginx 解压安装包
192.168.50.52cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mkdir /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2配置 tomcat 环境变量
vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1/usr/local/tomcat/tomcat1
export CATALINA_BASE1/usr/local/tomcat/tomcat1
export TOMCAT_HOME1/usr/local/tomcat/tomcat1#tomcat2
export CATALINA_HOME2/usr/local/tomcat/tomcat2
export CATALINA_BASE2/usr/local/tomcat/tomcat2
export TOMCAT_HOME2/usr/local/tomcat/tomcat2source /etc/profile.d/tomcat.sh
修改 tomcat2 中的 server.xml 文件要求各 tomcat 实例配置不能有重复的端口号
vim /usr/local/tomcat/tomcat2/conf/server.xml
Server port8006 shutdownSHUTDOWN #22行修改Server prot默认为8005 - 修改为8006
Connector port8081 protocolHTTP/1.1 #69行修改Connector portHTTP/1.1 默认为8080 - 修改为8081
Connector port8010 protocolAJP/1.3 redirectPort8443 /
#116行修改Connector port AJP/1.3默认为8009 - 修改为8010
修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件添加 tomcat 环境变量
vim /usr/local/tomcat/tomcat1/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE$CATALINA_BASE1
export CATALINA_HOME$CATALINA_HOME1
export TOMCAT_HOME$TOMCAT_HOME1vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE$CATALINA_BASE1
export CATALINA_HOME$CATALINA_HOME1
export TOMCAT_HOME$TOMCAT_HOME1vim /usr/local/tomcat/tomcat2/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE$CATALINA_BASE2
export CATALINA_HOME$CATALINA_HOME2
export TOMCAT_HOME$TOMCAT_HOME2vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE$CATALINA_BASE2
export CATALINA_HOME$CATALINA_HOME2
export TOMCAT_HOME$TOMCAT_HOME2启动各 tomcat 中的 /bin/startup.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
/usr/local/tomcat/tomcat2/bin/startup.sh netstat -natp | grep java
部署192.168.50.52的tomcat server
mkdir /usr/local/tomcat/tomcat1/webapps/qinvim /usr/local/tomcat/tomcat1/webapps/qin/index.jsp
% page languagejava importjava.util.* pageEncodingUTF-8%
html
head
titleJSP feng page/title #指定为 test2 页面
/head
body
% out.println(动态页面 1,mylove2);%
/body
/html vim /usr/local/tomcat/tomcat1/conf/server.xml #删除前面的 HOST 配置 Host namelocalhost appBasewebapps unpackWARstrue autoDeploytrue xmlValidationfalse xmlNamespaceAwarefalse Context docBase/usr/local/tomcat/tomcat1/webapps/qin path reloadabletrue / /Host /usr/local/tomcat/tomcat1/bin/shutdown.sh /usr/local/tomcat/tomcat1/bin/startup.sh mkdir /usr/local/tomcat/tomcat2/webapps/fengvim /usr/local/tomcat/tomcat2/webapps/feng/index.jsp
% page languagejava importjava.util.* pageEncodingUTF-8%
html
head
titleJSP feng page/title #指定为 test2 页面
/head
body
% out.println(动态页面 2,mylove3);%
/body
/html vim /usr/local/tomcat/tomcat2/conf/server.xml #删除前面的 HOST 配置 Host namelocalhost appBasewebapps unpackWARstrue autoDeploytrue xmlValidationfalse xmlNamespaceAwarefalse Context docBase/usr/local/tomcat/tomcat2/webapps/feng path reloadabletrue / /Host /usr/local/tomcat/tomcat2/bin/shutdown.sh /usr/local/tomcat/tomcat2/bin/startup.sh 部署192.168.50.53的tomcat server
mkdir /usr/local/tomcat/webapps/qin1vim /usr/local/tomcat/webapps/qin1/index.jsp
% page languagejava importjava.util.* pageEncodingUTF-8%
html
head
titleJSP feng page/title #指定为 test2 页面
/head
body
% out.println(动态页面 1,mylove);%
/body
/html vim /usr/local/tomcat/conf/server.xml #删除前面的 HOST 配置 Host namelocalhost appBasewebapps unpackWARstrue autoDeploytrue xmlValidationfalse xmlNamespaceAwarefalse Context docBase/usr/local/tomcat/webapps/qin1 path reloadabletrue / /Host /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh 部署192.168.50.56 七层反向代理Nginx server
#准备静态页面和静态图片
cd /usr/local/nginx/html
vim love.html
html body h1this is nginx test web/h1img srclove.jpg //body
/html vim /usr/local/nginx/conf/nginx.conf
......
http {
......#gzip on;#配置负载均衡的服务器列表weight参数表示权重权重越高被分配到的概率越大upstream tomcat_server {server 192.168.50.53:8080 weight1;server 192.168.50.52:8080 weight1;server 192.168.50.52:8081 weight1;}server {listen 80;server_name localhost;charset utf-8;#access_log logs/host.access.log main;#配置Nginx处理动态页面请求将 .jsp文件请求转发到Tomcat 服务器处理location ~ .*\.jsp$ {proxy_pass http://tomcat_server;
#设置后端的Web服务器可以获取远程客户端的真实IP
##设定后端的Web服务器接收到的请求访问的主机名域名或IP、端口默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话那么后端真实服务器在处理时会认为所有的请求都来自反向代理服务器如果后端有防攻击策略的话那么机器就被封掉了。proxy_set_header HOST $host;
##把$remote_addr赋值给X-Real-IP来获取源IPproxy_set_header X-Real-IP $remote_addr;
##在nginx 作为代理服务器时设置的IP列表会把经过的机器ip代理机器ip都记录下来proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#配置Nginx处理静态图片请求location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {root html;expires 10d;}location / {root html;index index.html index.htm;}
......}
......
} 部署192.168.50.58 七层反向代理Nginx server
htmlbodyh1this is nginx test2 web/h1img srcpsc.jpg //body
/htmlvim /usr/local/nginx/conf/nginx.confupstream tomcat_server {server 192.168.50.53:8080 weight1;server 192.168.50.52:8080 weight1;server 192.168.50.52:8081 weight1;}server {listen 80;server_name localhost;charset utf-8;#charset koi8-r;#access_log logs/host.access.log main;location ~ .*\.jsp$ {proxy_pass http://tomcat_server;proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {root html;expires 10d;} 部署192.168.50.57 四层反向代理nginx
vim /usr/local/nginx/conf/nginx.confstream {upstream appserver {server 192.168.50.56:80;server 192.168.50.58:80;}server {listen 8080;proxy_pass appserver;}
} 浏览器访问测试 http://192.168.50.52:8080 http://192.168.50.52:8081 http://192.168.50.57:8080/love.html 刷新页面 http://192.168.50.57:8080/index.jsp