• nginx反向代理 和部分优化


    准备环境  :

                   两台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                 重新加载配置

  • 相关阅读:
    [Swoole系列入门教程 5] UDP协议和demo
    [Swoole系列入门教程 3] 心跳检测
    [Swoole系列入门教程 1] CentOs 上的Swoole安装
    PHP CURL 异步测试
    layui 表格点击图片放大
    Laravel 指定日志生成目录
    联系我
    npm config set registry 与 cnpm的区别
    qq邮箱html邮件,图片不显示的问题
    qq邮箱问卷,测试不支持form表单
  • 原文地址:https://www.cnblogs.com/xiaolei123/p/11984381.html
Copyright © 2020-2023  润新知