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反向代理及负载均衡如何实现(基于linux)
Mar 31 Servers
Nginx进程管理和重载原理详解
Apr 22 Servers
uwsgi+nginx代理Django无法访问静态资源的解决
May 10 Servers
Nginx+Tomcat负载均衡多实例详解
Apr 11 Servers
Windows Server 2008 修改远程登录端口以及配置防火墙
Apr 28 Servers
Windows Server 2012 R2 磁盘分区教程
Apr 29 Servers
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
Apr 29 Servers
nginx实现多geoserver服务的负载均衡
May 15 Servers
永中文档在线转换预览基于nginx配置部署方案
Jun 10 Servers
腾讯云服务器部署前后分离项目之前端部署
Jun 28 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
Apache自带的ab压力测试工具的实现
Jul 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
解析thinkphp中的导入文件标签
2013/06/20 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
Django中的用户身份验证示例详解
2019/08/07 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
Java基础面试题
2014/07/19 面试题
晨会主持词
2014/03/17 职场文书
市场部经理岗位职责
2014/04/10 职场文书
城管大队整治方案
2014/05/06 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
部门活动策划方案
2014/08/16 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
Python初识逻辑与if语句及用法大全
2021/08/07 Python
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android