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中break与last的区别详析
Mar 31 Servers
nginx proxy_cache 缓存配置详解
Mar 31 Servers
Nginx代理同域名前后端分离项目的完整步骤
Mar 31 Servers
Mac环境Nginx配置和访问本地静态资源的实现
Mar 31 Servers
Nginx进程管理和重载原理详解
Apr 22 Servers
Nginx配置文件详解以及优化建议指南
Sep 15 Servers
解决xampp安装后Apache无法启动
Mar 21 Servers
超越Nginx的Web服务器caddy优雅用法
Jun 21 Servers
Windows Server 2022 超融合部署(图文教程)
Jun 25 Servers
Python安装及建立虚拟环境的完整步骤
Jun 25 Servers
使用 DataAnt 监控 Apache APISIX的原理解析
Jul 07 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之第九天
2006/10/09 PHP
php中的strpos使用示例
2014/02/27 PHP
php使用session二维数组实例
2014/11/06 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
详解Python做一个名片管理系统
2019/03/14 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
python中with用法讲解
2020/02/07 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
SQL Server面试题
2013/04/04 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
高级人员简历的自我评价分享
2013/11/03 职场文书
晚会主持词开场白
2014/03/17 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
诉讼和解协议书
2016/03/23 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB