Windows下使用Nginx+tomcat配置负载均衡
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强。
对于反向代理,百度百科上有一段描述:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
这里讲得很直白。反向代理方式实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。这样说,其实nginx完成的就是这样的工作。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处理的是tomcat。
说到上面的方式,也许很多人又会想起来,这样可以把静态文件交由nginx来进行处理。对,很多用到nginx的地方都是作为静态服务器,这样可以方便缓存那些静态文件,比如CSS,JS,html,htm等文件。
下面展示Nginx的基本配置:
(1) Nginx下载安装
从Nginx官网下载页面(http://nginx.org/en/download.html)下载稳定版本(Stable version)的Windows版本
解压到D盘,将文件夹名改为nginx(为了方便,不是必要)
(2)Nginx配置文件
Nginx配置文件默认在conf目录,主要配置文件为nginx.conf,下面是nginx作为前端反向代理服务器的配置。
nginx.conf文件代码如下:
#user nobody;
#工作进程数:这个数值要根据服务器CPU核心数来配置,如6核12线程的cpu可以配置为6或12
#当启动nginx后我们打开任务管理器,可以看到nginx.exe在进程中有两个
#nginx是多进程的,任务管理器中nginx中的数目对应的是主线程 + work的数目(worker_processes配置)
worker_processes 1; #错误日志存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info; #指定pid存放文件
#pid logs/nginx.pid; events {
#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
#use epoll; #设置单个进程同时打开的最大连接数,这个值设置大些能接受较多的连接,当然这需要cpu和内存支持哦
worker_connections 2048;
} 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; #client_header_timeout 3m;
#client_body_timeout 3m;
#send_timeout 3m; #client_header_buffer_size 1k;
#large_client_header_buffers 4 4k; sendfile on;
#tcp_nopush on;
#tcp_nodelay on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on; upstream localhost {
#在此处设置tomcat服务器信息,同样tomcat也可以不在同一主机中。这里设置了两个tomcat服务,比重是1:1了。 localhost更换为服务器的IP
#根据ip计算将请求分配各个后端tomcat,许多人误认为可以解决session问题,其实并不能。
#同一机器在多网情况下,路由切换,ip可能不同
#开启ip_hash,同一个ip地址请求时只能进入一个服务器,可以间接解决session不能共享问题
ip_hash;
server localhost:8080 weight=1;
server 10.8.6.23:8080 weight=1;
} server {
#这个很关键,它是nginx监听的端口,80端口在浏览器url中可以不写
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
proxy_pass http://localhost;
root html;
index index.html index.htm;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
} #jsp直接请求tomcat,我们先要去掉之前配的location /,避免全部请求被拦截了。
#location ~ \.jsp$ {
# proxy_pass http://localhost;
#} #nginx把静态文件缓存到文件夹里,我们先要去掉之前配的location /,避免全部请求被拦截了。
#location ~ \.(html|js|css|png|gif)$ {
# root D:\apache-tomcat-7.0.57\webapps\ROOT;
#} #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;
#}
}
}
本人测试的是在2台机器上不同的tomcat,如果想在一台机器上配置2个tomcat,首先要保证2个tomcat能同时启动起来,那么就需要设置tomcat的端口号不同了,复制一份tomcat文件,在tomcat目录下的server.xml文件里修改3处端口号(port):
<Server port="" shutdown="SHUTDOWN">
<Connector connectionTimeout="" port="" protocol="HTTP/1.1" redirectPort=""/>
<Connector port="" protocol="AJP/1.3" redirectPort=""/>
当2个tomcat确定能同时启动了,只需修改下面配置内容中的server的IP和端口号即可:
upstream localhost {
#在此处设置tomcat服务器信息,同样tomcat也可以不在同一主机中。这里设置了两个tomcat服务,比重是1:1了。 localhost更换为服务器的IP
#根据ip计算将请求分配各个后端tomcat,许多人误认为可以解决session问题,其实并不能。
#同一机器在多网情况下,路由切换,ip可能不同
#开启ip_hash,同一个ip地址请求时只能进入一个服务器,可以间接解决session不能共享问题
ip_hash;
server localhost:8080 weight=1;
server 10.8.6.23:8080 weight=1;
(3) Nginx启动和停止命令
Nginx目前只支持命令行操作,操作前先进入Dos命令环境,并进入Nginx部署目录。
1) start nginx: 启动Nginx,这里也许你会看到一个窗口一闪而过,实际上已经启动成功了,这时我们可以去任务管理器看一下进程,可以看到有两个nginx.exe,这是因为nginx是多进程的,任务管理器中nginx中的数目对应的是主线程 + work的数目(worker_processes配置)。
2) nginx -t:检查配置文件中是否有错,当我们修改了Nginx的配置文件里可以用此命令检查一下。
3) nginx -s reload:我们修改了文件,是不是就意思着必须先关了nginx再重新启动了,其实不必,Nginx可以用此命令重新加载文件的。
4) nginx -s stop:停止Nginx
至此Windows下Nginx+tomcat负载均衡配置结束。
Windows下使用Nginx+tomcat配置负载均衡的更多相关文章
- Windows下使用Nginx+Tomact做负载均衡
前言 今天,王子与大家闲谈一下如何在Windows下使用Nginx+Tomcat做负载均衡的完整步骤,小伙伴们可以试着自己动手实践一下哦. 另外说明一点,本篇文章是纯实操文章,不涉及太多原理的解读,后 ...
- 简单的 Nginx+Tomcat 配置负载均衡集群
简单 Nginx+Tomcat 配置负载均衡集群 前期准备 解压两个tomcat,修改端口号 server1:8081 server:8082 同时启动 nginx官网下载解压版nginx 创建一个简 ...
- Ubuntu下实现Nginx+Tomcat实现负载均衡
先说一下为什么写这个文章,在性能测试过程中,我们可能会关注很多指标,比如CPU.IO.网络.磁盘等,通过这些指标大致可以判断哪个环节遇到了性能瓶颈,但是当这些指标无法判断出性能瓶颈时,我们可能就需要对 ...
- windows下利用nginx 做IIS负载均衡
如果网站流量变大,就想加服务器分担压力,当然就要用到负载均衡,在windows 2003有自带的网络负载均衡,但配置还是挺麻烦的虽然有轮训和iphash的效果,但效果不算好. nginx小巧,下载不到 ...
- 从零开始学 Java - CentOS 下 Nginx + Tomcat 配置负载均衡
为什么现在有非常多的聪明人都在致力于互联网? 最近在读埃隆·马斯克传记,他说「我认为现在有非常多的聪明人都在致力于互联网」. 仔细一想,好像真的是这样的. 我问了自己一个问题:如果你不敲代码了,你能做 ...
- Linux学习总结(16)——CentOS 下 Nginx + Tomcat 配置负载均衡
最近在读埃隆·马斯克传记,他说「我认为现在有非常多的聪明人都在致力于互联网」. 仔细一想,好像真的是这样的. 我问了自己一个问题:如果你不敲代码了,你能做什么? 答案令人极其恐怖.吓得我赶紧又去写了一 ...
- Nginx+Tomcat 配置负载均衡集群
一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版n ...
- nginx+tomcat 配置负载均衡集群 (转载)
一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版n ...
- Nginx + Tomcat 配置负载均衡集群简单实例
一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版n ...
随机推荐
- win2008 配置TLS1.2
配置TLS1.2 提供两种方法, 选择其中一种就行了 1.手动设置 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProv ...
- vos忙时闲时费率不一样怎么设置
问题: 现有一客户要求上午闲时由原来的9:00追加到9:30 即: 9:30——12:00为忙时 14:00——18:00为忙时 其他为闲时 忙时费率为0.04元即4分 闲时费率为0.025元即2分5 ...
- 查看Linux网卡地址,网络地址
查看网络地址 ip a 或ip addr show 或ifconfig,此指令在部分linux系统中不支持
- 【js基础修炼之路】--创建文档碎片document.createDocumentFragment()
讲这个方法之前,我们应该先了解下插入节点时浏览器会做什么. 在浏览器中,我们一旦把节点添加到document.body(或者其他节点)中,页面就会更新并反映出这个变化,对于 ...
- ELF格式文件符号表全解析及readelf命令使用方法
http://blog.csdn.net/edonlii/article/details/8779075 1. 读取ELF文件头: $ readelf -h signELF Header: Magi ...
- 【CCPC-Wannafly Winter Camp Day3 (Div1) F】小清新数论(莫比乌斯反演+杜教筛)
点此看题面 大致题意: 让你求出\(\sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\). 莫比乌斯反演 这种题目,一看就是莫比乌斯反演啊!(连莫比乌斯函数都有) 关于莫比乌 ...
- Poj(2240),Floyd求汇率是不是赚钱
题目链接:http://poj.org/problem?id=2240. Floyd算法修改一下,我要最大路径(通过转汇率变到最大)改成max. #include <iostream> # ...
- Python 初始—(字符编码解码)
字符编码之间的编码转换则需要通过Unicode 进行转换,那么需要一个编码和解码实现与Unicode进行关联转换 例如utf-8转gbk utf-8----decode----->Unicode ...
- HDU.3177Crixalis's Equipment(贪心)
题目来源:3177 题目分析:一只蝎子要搬动一堆装备到一个容量为V的洞里面,每个装备有两个属性,一个是固有体积A,放置之后洞的剩余空间就会减少A,一个是移动体积B,只有当体积B小于等于当前洞的剩余体积 ...
- 【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace
之前我自己建立好了一个数据库xscj:表xs是已经定义好的 具体的定义数据类型如下: 为了复制表xs,我们新建一个表名为xstext,使用下列语句进行复制xs,或者说是备份都可以: create ta ...