利用nginx做反向代理和负载均衡是减轻服务器压力的有效方式。nginx代理服务器接收多个客户端请求,

根据配置的参数均衡到每个tomcat服务器上,tomcat处理请求,返回响应结果给nginx,nginx再返回给指定客户端。

而一些静态的资源可以由nginx直接返回给客户端。这样减轻了tomcat服务器的压力,如下图。

反向代理:代理服务器,利用代理服务器接收请求及返回响应内容

正向代理:代理客户端,如VPN,是改变客户端的节点

利用nginx做反向代理需要在nginx.conf的server中添加proxy_pass,并且远程访问的ip会变成

nginx代理服务器的ip,需要在请求头中原客户端的ip地址:

  1. proxy_set_header X-real-ip $remote_addr;
  2. proxy_pass http://myupstream;

这里myupstream是upstream流的名称,upstream是用来做负载均衡的,在http的配置内容下定义upstream

  1. #负载均衡配置
  2. upstream myupstream {
  3. server 192.168.18.128:8080 weight=1 max_fails=2 fail_timeout=30s;
  4. server 192.168.18.128:8081 weight=1 max_fails=2 fail_timeout=30s;
  5. }

负载均衡有下面几个参数:

weight:基于权重,weight值越高被访问的频率越高,这里8080和8081的访问频率相等,采用轮询,一次8080,一次8081

  1. server 192.168.18.128:8080 weight=1 ;
    server 192.168.18.128:8081 weight=1;

ip hash:同一ip访问同一服务器,当同一个客户端ip访问时,会使用上次处理的服务器,

不会造成上一次访问存在另一台服务器上的会话信息丢失问题 。

  1. upstream myupstream {
  2. server 192.168.18.128:8080 weight=1 max_fails=2 fail_timeout=30s;
  3. server 192.168.18.128:8081 weight=1 max_fails=2 fail_timeout=30s;
    ip hash;
  4. }

fair:基于响应时间,每次都会将请求转发给响应时间更短的服务器处理

  1. upstream myupstream {
  2. server 192.168.18.128:8080 weight=1 max_fails=2 fail_timeout=30s;
  3. server 192.168.18.128:8081 weight=1 max_fails=2 fail_timeout=30s;
    fair;
  4. }

下面是nginx代理服务器的全部配置:

  1. worker_processes 1;
  2.  
  3. events {
  4. worker_connections 1024;
  5. }
  6.  
  7. http {
  8. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  9. '$status $body_bytes_sent "$http_referer" '
  10. '"$http_user_agent" "$http_x_forwarded_for"';
  11. access_log logs/test1.log main;
  12. include mime.types;
  13. default_type application/octet-stream;
  14. fastcgi_intercept_errors on;
  15. charset utf-8;
  16. server_names_hash_bucket_size 128;
  17. client_header_buffer_size 4k;
  18. large_client_header_buffers 4 32k;
  19. client_max_body_size 300m;
  20. sendfile on;
  21. tcp_nopush on;
  22. keepalive_timeout 60;
  23.  
  24. tcp_nodelay on;
  25. client_body_buffer_size 512k;
  26. proxy_connect_timeout 5;
  27. proxy_read_timeout 60;
  28. proxy_send_timeout 5;
  29. proxy_buffer_size 16k;
  30. proxy_buffers 4 64k;
  31. proxy_busy_buffers_size 128k;
  32. proxy_temp_file_write_size 128k;
  33. gzip on;
  34. gzip_min_length 1k;
  35. gzip_buffers 4 16k;
  36. gzip_http_version 1.1;
  37. gzip_comp_level 2;
  38. gzip_types text/plain application/x-javascript text/css application/xml;
  39. gzip_vary on;
  40.  
  41. #负载均衡配置
  42. upstream myupstream {
  43. server 192.168.18.128:8080 weight=1 max_fails=2 fail_timeout=30s;
  44. server 192.168.18.128:8081 weight=1 max_fails=2 fail_timeout=30s;
  45. }
  46. server{
  47. listen 80;
  48. server_name nginx.test.com;
  49. access_log logs/test1.log main;
  50. location /{
  51. proxy_set_header X-real-ip $remote_addr;
  52. proxy_pass http://myupstream;
  53. root html;
  54.  
  55. index index.html index.htm;
  56. }
  57. }
  58.  
  59. server{
  60. listen 81;
  61. server_name nginx.test1.com;
  62. location /{
  63. root html;
  64. index index.html index.htm;
  65. }
  66. }
  67.  
  68. server {
  69. listen 82;
  70. server_name nginx.test2.com;
  71.  
  72. location / {
  73. root html;
  74. index index.html index.htm;
  75. }
  76.  
  77. error_page 500 502 503 504 /50x.html;
  78. location = /50x.html {
  79.  
  80. root html;
  81. }
  82. }
  83. }

nginx实现反向代理和负载均衡的更多相关文章

  1. Windos环境用Nginx配置反向代理和负载均衡

    Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...

  2. nginx的反向代理和负载均衡的一个总结

    之前一直觉的nginx的反向代理和负载均衡很厉害的样子,最近有机会接触了一下公司的这方面的技术,发现技术就是一张窗户纸呀,捅破了啥都明白了! 接下来先看一下nginx的反向代理: 简单的来说就是ngi ...

  3. nginx简单反向代理和负载均衡(ubuntu)

    nginx简单反向代理与负载均衡 环境:三台ubuntu 12.04.5 虚拟机    均装有nginx 1.1.19 以下u1(192.168.240.129) ,u2(192.168.240.13 ...

  4. nginx的反向代理和负载均衡的区别是什么 - 开源中国社区

    nginx的反向代理和负载均衡的区别是什么 - 开源中国社区   nginx的反向代理和负载均衡的区别是什么 #user  nobody;worker_processes  1;#error_log  ...

  5. nginx(三)反向代理和负载均衡

    nginx(三)反向代理和负载均衡 正向代理概念:比如在学校要上网,在学校内网是一个内网ip,需要连上公网就需要一个正向代理服务器. 反向代理概念: 看下图(Nginx只做请求的转发,后台有多个htt ...

  6. 七、CentOS 6.5 下 Nginx的反向代理和负载均衡的实现

    CentOS 6.5 下 Nginx的反向代理和负载均衡的实现 * 修复上面文章的问题: 复制出一个tomcat2之后,修改service.xml文件时,要修改三个端口: 1. <!-- 800 ...

  7. Nginx使用反向代理实现负载均衡

    Nginx使用反向代理实现负载均衡 yls 2019-9-20 简介 基于docker容器以及docker-compose,所以需要自学docker在linux环境的基本使用 使用两个tomcat作为 ...

  8. nginx 配置反向代理,负载均衡实战解析

    前言:NGINX的反向代理和负载均衡是网站架构中经常用到的一种高并发,高可用的方案,下面我们直接实战操作,当然理论也是要的. 一.反向代理 过程:反向代理:客户端 一>代理 <一> ...

  9. [笔记]nginx配置反向代理和负载均衡

    1.nginx配置文件:源码安装情况下,nginx.conf在解压后的安装包内.yum安装,一般情况下,一部分在/etc/nginx/nginx.conf中,一部分在/etc/nginx/conf.d ...

随机推荐

  1. verilog 1995 VS 2001 part1模块声明的扩展

    1.模块声明的扩展 (1)端口声明(input/output/inout)同数据类型声明(reg /wire)放在同一语句中. (2)ANSI C风格的端口声明可以用于module/task/func ...

  2. 【mysql】mysql has gone away

    原文 http://www.jb51.net/article/23781.htm MySQL server has gone away 问题的解决方法 投稿:mdxy-dxy 字体:[增加 减小] 类 ...

  3. Thinkphp5 同时连接两个库

    新建api/user.php <?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/8/25 * Time: 1 ...

  4. golang 函数的特殊用法

    1.可以复用一些写法.经常在单元测试过程中需要new一些对象可以new的操作抽离出来 package main import "fmt" type S struct { } fun ...

  5. 下载旧版本的JDK

    下载旧版本的JDK 有的时候我们需要去下载旧版本的JDK,但是进入Oracle官网,显示的总是新版的JDK,这里告诉大家怎么样去下载旧版本的JDK. 首先去JavaSE的 下载界面 拉到最下面,找到这 ...

  6. python日记整理

    都是自己的学习总结,要是总结的有问题大佬麻烦评价一下我好修改,谢谢 python插件插件+pycharm基本用法+markdown文本编写+jupyter notebook的基本操作汇总 一.计算机基 ...

  7. Lecture 3

    surface models 1. The two main methods of creating surface models are interpolation and triangulatio ...

  8. GoF23种设计模式之结构型模式之装饰模式

    一.概述 动态地给一个对象添加一些额外的职责.装饰模式比生成子类更为灵活. 二.适用性 1.在不影响其他对象的情况下,以动态.透明的方式给但个对象添加职责. 2.处理那些可以撤销的职责. 3.当不能采 ...

  9. STM32HAL学习博客

    https://www.cnblogs.com/wt88/category/1297945.html

  10. ubuntu12.04 ppa安装git

    PPA地址:https://launchpad.net/~git-core/+archive/ppa 支持所有的Ubuntu版本. 运行命令: sudo apt-add-repository ppa: ...