一、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. <%@ page isELIgnored="false"%>的作用

    JSP 2.0的一个主要特点是它支持表达语言(expression language).JSTL表达式语言可以使用标记格式方便地访问JSP的隐含对象和JavaBeans组件,JSTL的核心标记提供了流 ...

  2. JavaScript中按键事件的e.keyCode || e.which || e.charCode

    1.浏览器的按键事件 浏览器有3种按键事件——keydown,keypress和keyup,分别对应onkeydown.onkeypress和onkeyup3个事件句柄. 一个典型的按键会产生所有这三 ...

  3. canvas的Chart图表插件

    今天写页面页面需求到柱状图标,今天介绍一下我所用的Chart.js图表插件 官网:http://www.bootcss.com/p/chart.js/         里面会有下载js文件和中文文档 ...

  4. How to install the NVIDIA drivers on Ubuntu 18.04 Bionic Beaver Linux

    Objective The objective is to install the NVIDIA drivers on Ubuntu 18.04 Bionic Beaver Linux. This a ...

  5. 微信小程序开发5-WXML

    1.HTML元素是构建网页的一种单位,是由HTML标签和HTML属性组成的,HTML元素也是网页中的一种基本单位.HTML与其他标记语言一样,HTML的关键,是标签(tag).HTML标签是HTML语 ...

  6. 基于zxing的二维码(网格)扫描

    基于zxing的二维码(网格)扫描 前言:对于二维码扫描我们使用的是开源框架Zxing或者Zbar,这里使用基于zxing的二维码扫描,类似支付宝网格扫描, 二维码原理介绍: 二维码是用某种特定的几何 ...

  7. Jmeter对HTTP请求压力测试、并发测试

    最近公司需要开发一个简单的报名系统,供外网用户提供报名服务,由于我们公司是个初创的微型公司,开发人员都是刚毕业不久,开发经验相当缺乏. 对于服务器性能测试这块的经验更是少得可以忽略.迫使不得不让我们去 ...

  8. javascript 事件相关使用总结01

    javascript 事件相关使用总结01 这里总结一下js事件相关的经验. addEventLinstener()介绍 注册事件最基础的函数是这个 target.addEventListener(t ...

  9. 体验SpringBoot

    体验SpringBoot 1.介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开 ...

  10. 获取所有权windows目录所有权

    Takeown /r /f 盘符:\目录\目录 例如: Takeown /r /f C:\Windows\CSC