Nginx负载均衡+代理+ssl+压力测试
一、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+压力测试的更多相关文章
- 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 ...
- Linux centosVMware Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl
一.Nginx负载均衡 vim /usr/local/nginx/conf/vhost/load.conf // 写入如下内容 upstream qq_com { ip_hash; 同一个用户始终保持 ...
- Apache和Nginx负载均衡集群及测试分析
一.应用场景介绍 本文主要是介绍Apache和Tomcat在Linux环境下的安装讲解以及AJP协议动静分离负载均衡的实现,以及与Nginx负载性能比较.联网安装较为简单,故此处只说脱机的Linux环 ...
- Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡
转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...
- 【架构师之路】Nginx负载均衡与反向代理—《亿级流量网站架构核心技术》
本篇摘自<亿级流量网站架构核心技术>第二章 Nginx负载均衡与反向代理 部分内容. 当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台.几十台.几百台.然而,用 ...
- nginx负载均衡tomcat和配置ssl
目录 tomcat 组件功能 engine host context connector service server valve logger realm UserDatabaseRealm 工作流 ...
- nginx负载均衡 理解与测试
Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...
- Nginx负载均衡与反向代理—《亿级流量网站架构核心技术》
当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台.几十台.几百台.然而,用户访问时是通过如http://www.XX.com的方式访问,在请求时,浏览器首先会查询DNS服务 ...
- nginx 负载均衡及反向代理
Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师开发,官方测试nginx能够支支撑5万并发链接,并且cpu.内存 ...
随机推荐
- ImportError: No module named bs4错误解决方法
前言:毕业论文打算用Python做爬虫爬一些数据,最近开始入门Python: 在学习的时候遇到一个问题,按照看的文章安装了Python,也配置了相应的环境(使用window系统),使用pycharm编 ...
- Jquery trigger 与 triggerHandler
secying Jquery trigger与triggerHandler trigger: 在每一个匹配的元素上触发某类事件(即触发jQuery对象集合中每一个元素). 这个函数也会导致浏览器同名的 ...
- 10分钟学会Less开发环境搭建与初体验
Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题.扩充. 今天看一下,10分钟能不能手把手快速教会你Le ...
- Python爬虫教程-14-爬虫使用filecookiejar保存cookie文件(人人网)
Python爬虫教程-14-爬虫使用filecookiejar保存cookie文件(人人网) 上一篇介绍了利用CookieJar访问人人网,本篇将使用filecookiejar将cookie以文件形式 ...
- idea 出现 java.noSuchMechodFound
公司 用了多个项目来相互之间形成依赖.每次修改或者添加新功能,会升级版本.用的是maven,这几天 一直 出现一个问题就是:本地 升级版本完后 使用 git命令 mvn -deploy -e 打包后, ...
- spring-wind 搭建过程问题记录
最近想搭一个 shiro+ssm的快速开发框架,用于后台管理以及微信公众号的开发.后台主要是权限管理,于是选择有spring+shiro,微信公众号的前端页面搜了下有用velocity开发的,刚好看到 ...
- 20.远程分支&跟踪分支
远程分支 远程引用是对远程仓库的引用(指针),包括分支.标签等等. 你可以通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show ...
- 关于单一网络适配器拓扑TMG
单网络适配器拓扑的功能 在单网络适配器拓扑中可以实现有限的 Forefront TMG 功能,其中包括: 针对 HTTP.HTTPS 和 CERN 代理 FTP 的正向 (CERN) 代理(仅限下载) ...
- python filter&sorted
filter filter()接收一个函数和一个序列和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素在一个list中, ...
- ArcSde服务启动后又停止
问题:突然发现ArcSde服务无法启动,“ArcSde服务启动后又停止,......” 环境:Win7+ArcSDE10 +Oracle11g 由于本人使用ArcSde时间不长,基本没有遇到过什么问题 ...