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 负载均衡是什么以及该如何配置
Mar 31 Servers
nginx 反向代理之 proxy_pass的实现
Mar 31 Servers
浅谈Nginx 中的两种限流方式
Mar 31 Servers
Docker官方工具docker-registry案例演示
Apr 13 Servers
nginx容器方式反向代理实战
Apr 18 Servers
Window server 2012 R2 AD域的组策略相关设置
Apr 28 Servers
KVM基础命令详解
Apr 30 Servers
Win2008系统搭建DHCP服务器
Jun 25 Servers
vscode内网访问服务器的方法
Jun 28 Servers
Windows server 2003卸载和安装IIS的图文教程
Jul 15 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
Fluentd搭建日志收集服务
Sep 23 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数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php随机显示图片的简单示例
2014/02/15 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
php实现评论回复删除功能
2017/05/23 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
Dom与浏览器兼容性说明
2010/10/25 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
python中管道用法入门实例
2015/06/04 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
python同时遍历两个list用法说明
2020/05/02 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
施工安全协议书
2013/12/11 职场文书
入党积极分子介绍信
2014/01/17 职场文书
驳回起诉裁定书
2015/05/19 职场文书
单位证明范文
2015/06/18 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python