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启动失败的几种错误处理
Apr 01 Servers
Nginx配置Https安全认证的实现
May 26 Servers
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
Nov 17 Servers
Kubernetes关键组件与结构组成介绍
Mar 31 Servers
Kubernetes部署实例并配置Deployment、网络映射、副本集
Apr 01 Servers
docker compose 部署 golang 的 Athens 私有代理问题
Apr 28 Servers
Vscode中SSH插件如何远程连接Linux
May 02 Servers
阿里云服务器Ubuntu 20.04上安装Odoo 15
May 20 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
Nginx配置使用详解
Jul 07 Servers
WIN10使用IIS部署ftp服务器详细教程
Aug 05 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
PHP全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
Python中asyncore的用法实例
2014/09/29 Python
Python中暂存上传图片的方法
2015/02/18 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
《美丽的彩虹》教学反思
2014/02/25 职场文书
中学社团活动总结
2015/05/07 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书