Nginx (发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。 其特色是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。javascript
http://nginx.org/en/download.html ,这里咱们推荐下载稳定版(stable versions),本文采用nginx-0.8.20。
css
Nginx-
|_ conf 配置目录
|_ contrib
|_ docs 文档目录
|_ logs 日志目录
|_ temp 临时文件目录
|_ html 静态页面目录
|_ nginx.exe 主程序html
window下安装Nginx极其简单,解压缩到一个无空格的英文目录便可(我的习惯,担忧中文出问题),双击nginx启动,这里我安装到:D:\server目录,下面涉及 到的tomcat也安装在此目录。
DOS环境启动
若果想中止nginx,dos环境运行命令:nginx -s stop前端
Nginx配置文件默认在conf目录,主要配置文件为nginx.conf,咱们安装在D:\server\nginx-0.8.20、默认主配置文件为D:\server\nginx-0.8.20\nginx.conf。下面是nginx做为前端反向代理服务器的配置(若是不存在的文件能够手动建立)。java
Nginx.conf代码node
#Nginx所用用户和组,window下不指定 #user niumd niumd; #工做的子进程数量(一般等于CPU数量或者2倍于CPU) worker_processes 2; #错误日志存放路径 #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; #容许最大链接数 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 off; access_log logs/access.log; 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 75 20; include gzip.conf; upstream localhost { #根据ip计算将请求分配各那个后端tomcat,许多人误认为能够解决session问题,其实并不能。 #同一机器在多网状况下,路由切换,ip可能不一样 (此处配置多服务的地址和端口号) #ip_hash; server localhost:18081; server localhost:18080; } server { # Nginx默认监听的端口号,能够修改修改以后访问地址须要带端口 listen 80; server_name localhost; location / { proxy_connect_timeout 3; proxy_send_timeout 30; proxy_read_timeout 30; proxy_pass http://localhost; } } }
代理设置以下:linux
Proxy.conf代码:nginx
proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k;
gzip压缩相关配置以下:apache
Gzip.conf代码:后端
gzip on; gzip_min_length 1000; gzip_types text/plain text/css application/x-javascript;
对于tomcat你们都很熟悉,只须要修改server.xml配置文件便可,这里咱们以apache-tomcat-6.0.14为例,分别在 server目录,解压缩并命名为:apache-tomcat-6.0.14_一、apache-tomcat-6.0.14_2。
第一处端口修改:Xml代码
<!-- 修改port端口:18006 俩个tomcat不能重复,端口随意,别过小--> <Server port="18006" shutdown="SHUTDOWN">
第二处端口修改:Xml代码
<Connector port="18081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
第三处端口修改:Java代码
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
两个tomcat的端口别重复,保证能启动起来,另外一个tomcat配置雷同,监听端口为18080,附件中咱们将上传全部的配置信息。
首先测试nginx配置是否正确,测试命令:nginx -t (默认验证:conf\nginx.conf),也能够指定配置文件路径。
其次验证tomcat,启动两个tomcat,不出现端口冲突即为成功;
最后验证配置负载均衡设置,http://localhost/ 或http://localhost/index.jsp 。我修改了tomcat默认首页index.jsp页面,添加文本tomcat一、 tomcat2。注意:页面中出现文本: tomcat二、tomcat1。说明访问了不一样的tomcat。
至此window下nginx+tomcat负载均衡配置结束,关于tomcat Session的问题一般是采用memcached,或者采用nginx_upstream_jvm_route ,他是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。若是tomcat过多不建议session同步,server间相互同步session很耗资源,高并发环境容易引发Session风暴。请根据 本身应用状况合理采纳session解决方案。