准备环境  :

两台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学习之【第十四篇】:Python中的装饰器

    1.什么是装饰器? 器即函数 装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 2.遵循的原则 装饰器必须遵循以下两个原则: 不修改被装饰函数的源代码(开放封 ...

  2. insmod: can't insert 'btn_drv.ko': Operation not permitted

    检测内核是否以及支持 要插入的驱动,若内核支持,则需要裁减掉内核支持的驱动才能安装上自己所写的驱动程序.

  3. WIN7安装Docker Toolbox、制作镜像并发到阿里云

    一.安装Docker Toolbox,并配置国内源加速 WIndows7不支持Hyper-v,所以只能采用Docker Toolbox的方式使用Docker.传送门:http://mirrors.al ...

  4. Arduino 基于 ESP8266 配置WIFI模块

    Arduino 基于 ESP8266 配置WIFI模块 使用ESP8266作为服务器,使用浏览器访问该服务器,从而控制LED灯 选择 [文件]->[示例]->[ESP8266WIFI]-& ...

  5. lqb 基础练习 闰年判断

    基础练习 闰年判断 时间限制:1.0s   内存限制:256.0MB     问题描述 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍 ...

  6. Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源

    本文是 Spring Boot 整合数据持久化方案的最后一篇,主要和大伙来聊聊 Spring Boot 整合 Jpa 多数据源问题.在 Spring Boot 整合JbdcTemplate 多数据源. ...

  7. 用户环境变量 shell变量 别名

    常见用户环境变量: 环境变量 说明 LANG   HOME   LOGNAME 用户名 PATH   SHELL   PWD   查看环境变量用:env或者echo $LANG 设置用户环境变量:ex ...

  8. Win32窗口消息机制 x Android消息机制 x 异步执行

    如果你开发过Win32窗口程序,那么当你看到android代码到处都有的mHandler.sendEmptyMessage和 private final Handler mHandler = new ...

  9. Rio手把手教学:如何打造容器化应用程序的一站式部署体验

    11月19日,业界应用最为广泛的Kubernetes管理平台创建者Rancher Labs(以下简称Rancher)宣布Rio发布了beta版本,这是基于Kubernetes的应用程序部署引擎.它于今 ...

  10. firefox浏览器中使用vux的x-input报错TypeError: _this3.$refs.input.scrollIntoViewIfNeeded is not a function

    最近做公众号项目,想着统一风格,所以决定使用vux. 在调试时发现,只要鼠标点击x-input输入框,就会报错 TypeError: _this3.$refs.input.scrollIntoView ...