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的反向代理实例详解
Mar 31 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
使用goaccess分析nginx日志的详细方法
Jul 09 Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
Apr 02 Servers
OpenStack虚拟机快照和增量备份实现方法
Apr 04 Servers
idea下配置tomcat避坑详解
Apr 12 Servers
搭建Yolov5服务器
Apr 30 Servers
centos7安装mysql5.7经验记录
May 02 Servers
windows server2008 开启端口的实现方法
Jun 25 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之数据库操作详解及乱码解决!
2007/01/02 PHP
PHP微信红包API接口
2015/12/05 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
快速了解Node中的Stream流是什么
2019/02/13 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
详解jenkins自动化部署vue
2019/05/14 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
在购买印度民族服饰:Soch
2020/09/15 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
关于热爱祖国的演讲稿
2014/05/04 职场文书
销售团队获奖感言
2014/08/14 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书