Nginx反向代理及负载均衡如何实现(基于linux)


Posted in Servers onMarch 31, 2021

这里来试验下nginx的反向代理。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

在我们的java项目中的体现就是,通过80端口访问,Nginx接收到,然后进行转发给tomcat服务器,再将服务器的结果给返回。

这里需要修改nginx.conf文件。

upstream backend {
  #代理的IP weight权重大的,接收的访问量就大,反之
  server localhost:8084 weight=50;
  server localhost:8088 weight=50;
}

将接收的请求进行转发:

# / 所有做负载均衡 + 反向代理
    location / {
      root  /data/wwwroot1;
      index index.html index.htm;#索引文件
      proxy_pass  http://backend;
    }

这样,通过请求nginx的请求,就可以被分配转发到tomcat上去。这里我是定义了两台tomcat服务器,同时用来做负载均衡的处理。通过设置weight,可以控制访问量。

具体配置代码如下;

#user nobody;
# worker 工作进程 一般设置 CPU数 * 核数
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;#1个worker产生多少个连接数
}
 
# 配置HTTP服务器的主要段
http {
  include    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 logs/access.log main;
 
  sendfile    on;
  #tcp_nopush   on;
 
  #keepalive_timeout 0;
  keepalive_timeout 65;
     
  #gzip压缩功能设置
  gzip on;
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 6;
  gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  gzip_vary on;
   
  #设定负载均衡后台服务器列表
  upstream backend {
    #代理的IP weight权重大的,接收的访问量就大,反之
    server localhost:8084 weight=50;
    server localhost:8088 weight=50;
  }
   
   
   
  server {
    listen    2022;
    server_name localhost;
    charset utf-8;
    access_log logs/wwwroot2.access.log main;
    location / {
      root  /data/wwwroot2;
      index index.html index.htm;#索引文件
    }
  }
  # 虚拟主机段
  server {
    listen    80;
    server_name localhost;
    root /data/wwwroot1;
    charset utf-8;
    #访问日志
    access_log logs/wwwroot1.access.log main;
    # / 所有做负载均衡 + 反向代理
    location / {
      root  /data/wwwroot1;
      index index.html index.htm;#索引文件
      proxy_pass  http://backend;
    }
 
    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;
    }
 
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #  proxy_pass  http://127.0.0.1;
    #}
 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #  root      html;
    #  fastcgi_pass  127.0.0.1:9000;
    #  fastcgi_index index.php;
    #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    #  include    fastcgi_params;
    #}
 
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #  deny all;
    #}
  }
 
 
  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #  listen    8000;
  #  listen    somename:8080;
  #  server_name somename alias another.alias;
 
  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}
 
 
  # HTTPS server
  #
  #server {
  #  listen    443 ssl;
  #  server_name localhost;
 
  #  ssl_certificate   cert.pem;
  #  ssl_certificate_key cert.key;
 
  #  ssl_session_cache  shared:SSL:1m;
  #  ssl_session_timeout 5m;
 
  #  ssl_ciphers HIGH:!aNULL:!MD5;
  #  ssl_prefer_server_ciphers on;
 
  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}
 
}

测试结果发现,通过访问80端口的地址,展现的结果是基本五五开的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Servers 相关文章推荐
Nginx开启Brotli压缩算法实现过程详解
Mar 31 Servers
详解Nginx启动失败的几种错误处理
Apr 01 Servers
Nginx虚拟主机的搭建的实现步骤
Jan 18 Servers
Nginx中使用Lua脚本与图片的缩略图处理的实现
Mar 18 Servers
Dashboard管理Kubernetes集群与API访问配置
Apr 01 Servers
阿里云k8s服务升级时502错误 springboot项目应用
Apr 09 Servers
Windows Server 2012配置DNS服务器的方法
Apr 29 Servers
讨论nginx location 顺序问题
May 30 Servers
git stash(储藏)的用法总结
Jun 25 Servers
nginx静态资源的服务器配置方法
Jul 07 Servers
Docker容器harbor私有仓库部署和管理
Aug 05 Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
Aug 14 Servers
Nginx配置80端口访问8080及项目名地址方法解析
Mar 31 #Servers
Nginx配置https原理及实现过程详解
Mar 31 #Servers
如何在centos上使用yum安装rabbitmq-server
Mar 31 #Servers
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
阿里云Nginx配置https实现域名访问项目(图文教程)
详解Nginx 工作原理
fastdfs+nginx集群搭建的实现
You might like
php结合表单实现一些简单功能的例子
2011/06/04 PHP
PHP英文字母大小写转换函数小结
2014/05/03 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
JScript中的"this"关键字使用方式补充材料
2007/03/08 Javascript
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
Pytorch之Variable的用法
2019/12/31 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
python3.4中清屏的处理方法
2020/07/06 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
python爬虫请求头的使用
2020/12/01 Python
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
大学生入党自我鉴定
2013/10/31 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers