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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

worker_processes 1;

events {
worker_connections 1024;
} http {
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/test1.log main;
include mime.types;
default_type application/octet-stream;
fastcgi_intercept_errors on;
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60; tcp_nodelay on;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on; #负载均衡配置
upstream myupstream {
server 192.168.18.128:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.18.128:8081 weight=1 max_fails=2 fail_timeout=30s;
}
server{
listen 80;
server_name nginx.test.com;
access_log logs/test1.log main;
location /{
proxy_set_header X-real-ip $remote_addr;
proxy_pass http://myupstream;
root html; index index.html index.htm;
}
} server{
listen 81;
server_name nginx.test1.com;
location /{
root html;
index index.html index.htm;
}
} server {
listen 82;
server_name nginx.test2.com; location / {
root html;
index index.html index.htm;
} error_page 500 502 503 504 /50x.html;
location = /50x.html { root html;
}
}
}

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. Java-basic-6-方法

    命令行参数的使用 public class test { public static void main(String args[]) { for(int i = 0; i < args.len ...

  2. Ubuntu 15 下 Qt 配置mysql链接及基本操作

    序 最近需要在Linux下做一个unix网络编程项目,选择了Ubuntu 最新版本15.04 : 开发环境:Qt 5 数据库: MySQL 安装Qt 和 MySQL 简要介绍一下软件的安装! 安装Qt ...

  3. 使用powershell/vbs自动化模拟鼠标点击操作

    今天想做windows上的自动化,所以才有了模拟鼠标点击的需求,先考虑用powershell实现: 首先先安装一个名为“WASP”免费可用的Powershell扩展程序,下载地址:http://was ...

  4. bash数组操作-定义/初始化/赋值…

    数组:     连续的多个独立内存空间,每个内存空间相当于一个变量     数组元素:数组名+索引         索引:从0开始编号             声明数组:         declar ...

  5. 使用MeidaStore.Audio获得手机中的音频文件

    MediaStore是安卓系统自带的多媒体系统数据库,他在每次开机时刷新一次,可以通过Cursor这个类对数据库进行访问与修改,修改之后需用广播强制刷新. 使用Cursor必须通过Context获得C ...

  6. HDU 3861 The King’s Problem 强连通分量 最小路径覆盖

    先找出强连通分量缩点,然后就是最小路径覆盖. 构造一个二分图,把每个点\(i\)拆成两个点\(X_i,Y_i\). 对于原图中的边\(u \to v\),在二分图添加一条边\(X_u \to Y_v\ ...

  7. UVa 1630 区间DP Folding

    一个字符串如果能简写,要么是重复多次,按题中的要求简写:要么是左右两个部分分别简写后再拼起来. dp(i, j)表示字串(i, j)所能被简写的最短的字符串. 判断一个字符串是否为周期串以及求出它的周 ...

  8. OO第四单元博客

    第四单元博客 这个单元的作业,emmmm助教们做的工作还是一如既往的多,我们只负责添一添代码,最后一次作业了,感谢各位助教和老师,同时也希望我能顺利通过这最后一关. 架构设计 第一次作业架构展示 第一 ...

  9. PHP 开启或关闭错误提示

    如果不具备修改 php.ini 的权限,可以如下: // 只需在php文件中加入这两句即可开启PHP错误提示 ini_set("display_errors", "On& ...

  10. POJ 2033 Alphacode

    Alphacode Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11666   Accepted: 3564 Descri ...