一、Tomcat安装
1.下载jdk,Tomcat,解压到/usr/local/
2.配置jdk环境:

 # vim /etc/profile
      export JAVA_HOME=/usr/local/jdk1..0_171
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

3.修改Tomcat首页:

# cd /usr/local/apache-tomcat-8.0./webapps/
# rm -rf !(ROOT)
# rm -rf ROOT/*
# echo "192.168.11.199" >ROOT/index.html

4.启动Tomcat

二、nginx安装
1.下载源码包,解压到/usr/local/
2.安装编译依赖:

 # yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

3.编译:

 # ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --with-http_ssl_module

4.安装:

 # make && make install

5.启动:

 # nginx

三、负载均衡
1.ssl认证
  私钥:

 # openssl genrsa -des3 -out jason.key 

  数字证书:

  # openssl req -new -key jason.key -out jason.csr

  去除访问密码:

 # openssl rsa -in jason.key -out jason-np.key

  公钥:

 # openssl x509 -req -days  -in jason.csr -signkey jason-np.key -out jason.crt

2.修改nginx配置文件:

 # vim /opt/nginx/conf/nginx.conf
  #全局配置
  worker_processes ;
  pid /var/run/nginx.pid;
  worker_rlimit_nofile ;   #events配置
  events {
  use epoll;
  accept_mutex on;
  multi_accept on;
  worker_connections ;
  }   #HTTP配置
  http {
  include mime.types;
  default_type application/octet-stream;
  sendfile on;
  keepalive_timeout ;
  tcp_nopush on;
  tcp_nodelay on;
  client_header_buffer_size 32k;
  large_client_header_buffers 64k;
  client_max_body_size 8m;
  proxy_cache_key '$host:$server_port$request_uri';
  proxy_temp_file_write_size 64k;
  proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
  fastcgi_connect_timeout ;
  fastcgi_send_timeout ;
  fastcgi_read_timeout ;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
  fastcgi_intercept_errors on;    #开启错误页面
  log_format main '$remote_addr - $remote_user [$time_local] requesthost:"$http_host"; "$request" requesttime:"$request_time"; '
  '$status $body_bytes_sent "$http_referer" - $request_body'
  '"$http_user_agent" "$http_x_forwarded_for"';     #设置日志输出格式
  error_log /var/log/nginx/error.log;
  access_log /var/log/nginx/access.log main;      #成功日志格式调用log_format
  gzip on;        #开启页面压缩,提高页面打开速度
  gzip_min_length 1k;
  gzip_buffers 64K;
  gzip_http_version 1.1;
  gzip_comp_level ;
  gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
  gzip_vary on;   upstream tomcat_server
  {
  server 192.168.11.199: weight=;
  server 192.168.11.196: weight=;
  }   server
  {
  listen ;
  server_name 192.168.11.199;
  ssl on;
  ssl_certificate /opt/nginx/ssl/nginx.crt;        #公钥
  ssl_certificate_key /opt/nginx/ssl/nginx.key;     #私钥
  ssl_session_timeout 5m;   location /
  { proxy_pass http://tomcat_server; }        #负载
  }   server
  {
  listen ;
  root html;
  index index.html index.htm;   }   server
  {
  listen ;
  root html;
  index index.html;
  error_page = /.html;
  error_page = /50x.html;
  }
  }

 

3.编写日志分割脚本

  

 #!/bin/bash
#此脚本用于自动分割Nginx的日志,包括access.log和error.log
#每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开日志文件
#Nginx日志文件所在目录
LOG_PATH=/var/log/nginx/
#获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#获取pid文件路径
PID=/var/run/nginx.pid
#分割日志
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
#向Nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 `cat ${PID}`
chmod +x /opt/nginx/conf/log_cut.sh

 

4.相关测试

  1.gzip压缩测试:

 # curl -I -H "Accept-Encoding: gzip, deflate" "192.168.11.199"

  2.nginx版本号:F12查看页面

3.日志分割:

 # ll /var/log/nginx

4.日志输出格式:

 # tail -f /var/log/nginx/access---.log

5.错误页面:

 http://192.168.11.199:71/djkf


5.压力测试(ApacheBench):

 # yum -y install httpd-tools
  关闭ssl认证测试:
  # ab -c -n http://192.168.11.199:80/index.html #一次5000并发,请求总数为200000
  Concurrency Level:          #一次请求量
  Time taken for tests: 10.484 seconds      #耗时
  Complete requests:    #完成请求
  Failed requests:      #请求失败   开启ssl认证测试:
  # ab -c -n https://192.168.11.199:443/index.html
  Concurrency Level:
  Time taken for tests: 27.011 seconds
  Complete requests:
  Failed requests:

6.nginx调优:

   worker_rlimit_nofile ;         #文件打开数量
  worker_connections ;       #单个进程最大连接数
  sendfile on;             #开启高效文件传输模式
  tcp_nopush on;           #防止网路阻塞
  fastcgi_connect_timeout ;      #指定连接到后端FastCGI的超时时间。
  fastcgi_send_timeout ;        #向FastCGI传送请求的超时时间。
  fastcgi_read_timeout ;        #指定接收FastCGI应答的超时时间。

7..系统层面
  文件资源限制的配置:

 # vim /etc/security/limits.conf
    * soft nofile
    * hard nofile
    * soft noproc
    * hard noproc

#logout重新登录查看

 # ulimit -n

2.内核参数:

 # vim /etc/sysctl.conf
  net.ipv4.ip_forward =          #出现禁用 IPv4 包转送
  net.ipv4.conf.default.rp_filter =     #源路由核查功能
  net.ipv4.conf.default.accept_source_route =   #禁用所有IP源路由
  kernel.sysrq =             #禁用SysRq(组合键)功能
  kernel.core_uses_pid =         #控制core文件的文件名中是否添加pid作为扩展
  net.ipv4.tcp_syncookies =        //这四行标红内容,一般是发现大量TIME_WAIT时的解决办法
  kernel.msgmnb =        #每个消息队列的最大字节限制。
  kernel.msgmax =       #整个系统的最大数量的消息队列
  kernel.shmmax =        #定义单个共享内存段的最大值
  kernel.shmall =        #控制共享内存页数
  net.ipv4.tcp_max_tw_buckets =
  net.ipv4.tcp_sack =         #启用有选择的应答
  net.ipv4.tcp_window_scaling =        #设置tcp/ip会话的滑动窗口大小是否可变
  net.ipv4.tcp_rmem =        #为每个TCP连接分配的读、写缓冲区内存大小
  net.ipv4.tcp_wmem =        #为每个TCP连接分配的读、写缓冲区内存大小
  net.core.wmem_default =        # 发送套接字缓冲区大小的默认值
  net.core.rmem_default =        #接收套接字缓冲区大小的默认值
  net.core.rmem_max =
  net.core.wmem_max =
  net.core.netdev_max_backlog =      #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
  net.core.somaxconn =
  net.ipv4.tcp_max_orphans =
  net.ipv4.tcp_max_syn_backlog =
  net.ipv4.tcp_timestamps =       //#开启TCP时间戳,这个选择最好加上
  net.ipv4.tcp_synack_retries =        #服务端收到sys,还未发出syn+ack
  net.ipv4.tcp_syn_retries =
  net.ipv4.tcp_tw_recycle =        //开启此功能可以减少TIME-WAIT状态,但是NAT网络模式下打开有可能会导致tcp连接错误,慎重。
  net.ipv4.tcp_tw_reuse =
  net.ipv4.tcp_mem =
  net.ipv4.tcp_fin_timeout =
  net.ipv4.tcp_keepalive_time =
  net.ipv4.ip_local_port_range =
  net.ipv4.ip_conntrack_max =
# sysctl -p

Nginx负载均衡+代理+ssl+压力测试的更多相关文章

  1. Nginx负载均衡、SSL原理、生成SSL密钥对、Nginx配置SSL

    6月12日任务 12.17 Nginx负载均衡12.18 ssl原理12.19 生成ssl密钥对12.20 Nginx配置ssl扩展 针对请求的uri来代理 http://ask.apelearn.c ...

  2. Linux centosVMware Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl

    一.Nginx负载均衡 vim /usr/local/nginx/conf/vhost/load.conf // 写入如下内容 upstream qq_com { ip_hash; 同一个用户始终保持 ...

  3. Apache和Nginx负载均衡集群及测试分析

    一.应用场景介绍 本文主要是介绍Apache和Tomcat在Linux环境下的安装讲解以及AJP协议动静分离负载均衡的实现,以及与Nginx负载性能比较.联网安装较为简单,故此处只说脱机的Linux环 ...

  4. Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡

    转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...

  5. 【架构师之路】Nginx负载均衡与反向代理—《亿级流量网站架构核心技术》

    本篇摘自<亿级流量网站架构核心技术>第二章 Nginx负载均衡与反向代理 部分内容. 当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台.几十台.几百台.然而,用 ...

  6. nginx负载均衡tomcat和配置ssl

    目录 tomcat 组件功能 engine host context connector service server valve logger realm UserDatabaseRealm 工作流 ...

  7. nginx负载均衡 理解与测试

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

  8. Nginx负载均衡与反向代理—《亿级流量网站架构核心技术》

    当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台.几十台.几百台.然而,用户访问时是通过如http://www.XX.com的方式访问,在请求时,浏览器首先会查询DNS服务 ...

  9. nginx 负载均衡及反向代理

    Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师开发,官方测试nginx能够支支撑5万并发链接,并且cpu.内存 ...

随机推荐

  1. maven父子项目

    maven搭建父子项目 1.先建立一个父项目,建立项目的时候,选择  Create a simple project 点击 next,填写以下信息 点击finish就可以了. 2.接下来要建立一个子项 ...

  2. lib 和 dll

    dll 和 lib只有在windows平台才会出现,老是忘记他们的区别和联系,记录一下,以备不时之需,也加深一下印象.  在弄懂两者的区别之前,需要知道两个概念: static library 和 d ...

  3. 移动web开发都会遇到的坑(会持续更新)

    1.自适应第一招 <meta name="viewport" content="width=device-width,initial-scale=1.0,user- ...

  4. Web前端面试指导(十一):样式导入有哪些方式?

    样式导入方式 link import 使用方式 link的使用 <link href="index.css" rel="stylesheet"> i ...

  5. sql-syscolumns,INFORMATION_SCHEMA.columns,sysobjects

    //计算表tb_Blog的字段个数 select count(*) from syscolumns where id=object_id('tb_Blog') 获取指定表的所有字段和字段类型 SELE ...

  6. 001Spring 定时任务 Scheduled

    01.@Scheduled注解参数 @Scheduled支持fixedRate.fixedDelay.cron表达式参数.其中,fixedRate和fixedDelay没有区别,都是启动时执行1次,每 ...

  7. PHP中empty、isset和is_null的使用区别

    关于PHP中empty().isset() 和 is_null() 这三个函数的区别,之前记得专门总结过,上次又被问到,网上已经很多,就用几个例子来说明: 测试用例选取: <?php $a;$b ...

  8. flask框架下的jinja2模板引擎(1)(模板渲染)

    #转载请留言联系 模板是什么? 在 flask 框架中,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本.模板作用即是承担视图函 ...

  9. 二十一、如何导入svg图片

    svg就相当于字体,如何将生成的svg导入到自己的项目中去呢? 1.将类似下面的文件放入自己的项目中: 2.生成的svg中有一个style.css文件,将里面的内容拷贝到你的css中,然后更改上图的路 ...

  10. springlog记录

    在servlet.xml加入 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-aut ...