NGINX

<article style="font-weight: 400;">

<header>
        </header><!-- .entry-header -->

<div><div id="safari-reader-element-marker" style="position: relative; top: 97%;"></div>
    <h1 class="clear">脑图</h1>

<h1 class="clear">Nginx</h1>
<p>nginx配置文件主要分为六个区域:</p>
<p><code>main(全局设置)</code>、<code>events(nginx工作模式)</code>、<code>http(http设置)</code>、</p>
<p><code>sever(主机设置)</code>、<code>location(URL匹配)</code>、<code>upstream(负载均衡服务器设置)</code></p>
<h2 class="clear">虚拟主机</h2>
<pre><code>
include  /usr/local/nginx/conf/vhosts/*;

</code></pre>
<h2 class="clear">正向代理反向代理概念</h2>
<p>两者的区别在于代理的对象不一样:<strong>正向代理</strong>代理的对象是客户端,<strong>反向代理</strong>代理的对象是服务端</p>
<p><img decoding="async" src="https://upload-images.jianshu.io/upload_images/21597556-09e8e7970de3cc8e.png" data-src="https://chevereto.mypicbed.top:11443/images/2019/04/2019-04-21_08-24.png" alt="2019-04-21_08-24.png"></p>
<h2 class="clear">配置反向代理:</h2>
<pre><code>
server {

    listen       80;

    server_name  nginx-01.xiaoniu.cn;

172.16.203.101/hello.html

location / {

    root html;

        proxy_pass http://192.168.0.21:8080;

    }

}

</code></pre>
<h2 class="clear">负载均衡</h2>
<p>在http这个节下面配置一个叫upstream的,后面的名字可以随意取,但是要和location下的proxy_pass http://后的保持一致。</p>
<pre><code>
http {

    upstream tomcats {

        server 172.16.203.20:8080 weight=1;

        server tomcat-02.xiaoniu.cn:8080 weight=1;

        server tomcat-02.xiaoniu.cn:8080 weight=1;

    }

    location ~ .*.(jsp|do|action) {

        proxy_pass http://tomcats;

    }

}

</code></pre>
<h2 class="clear">配置动静分离:</h2>
<p>动态资源 index.jsp</p>
<pre><code>
location ~ .*.(jsp|do|action)$ {

    proxy_pass http://tomcat-01.xiaoniu.cn:8080;

}

</code></pre>
<p>静态资源</p>
<pre><code>
location ~ .*.(html|js|css|gif|jpg|jpeg|png)$ {

    expires 3d;

}

</code></pre>
<h2 class="clear">高可靠软件keepalived</h2>
<p>keepalive是一款可以实现高可靠的软件,通常部署在2台服务器上,分为一主一备。Keepalived可以对本机上的进程进行检测,一旦Master检测出某个进程出现问题,将自己切换成Backup状态,然后通知另外一个节点切换成Master状态。</p>
<p><img decoding="async" src="https://upload-images.jianshu.io/upload_images/21597556-3e88fba49effa729.png" data-src="https://chevereto.mypicbed.top:11443/images/2019/04/2019-04-21_08-39.png" alt="2019-04-21_08-39.png"> ^8q5wnv</p>
<p><img decoding="async" src="https://upload-images.jianshu.io/upload_images/21597556-7dab690140730eb4.png" data-src="https://chevereto.mypicbed.top:11443/images/2019/04/2019-04-22_00-18.png" alt="2019-04-22_00-18.png"></p>
<h3 class="clear">keepalived安装</h3>
<p>下载keepalived官网:http://keepalived.org</p>
<p>将keepalived解压到/usr/local/src目录下</p>
<pre><code>
tar -zxvf  keepalived-1.3.6.tar.gz -C /usr/local/src

</code></pre>
<p>进入到/usr/local/src/keepalived-1.3.6目录</p>
<pre><code>
cd /usr/local/src/keepalived-1.3.6

</code></pre>
<p>开始configure</p>
<pre><code>
./configure

</code></pre>
<p>编译并安装</p>
<pre><code>
make && make install

</code></pre>
<h3 class="clear">将keepalived添加到系统服务中</h3>
<p>拷贝执行文件</p>
<p>将init.d文件拷贝到etc下,加入开机启动项</p>
<p>将keepalived文件拷贝到etc下</p>
<pre><code>
cp /usr/local/src/keepalived-1.3.6/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

</code></pre>
<p>创建keepalived文件夹</p>
<pre><code>
mkdir -p /etc/keepalived

</code></pre>
<p>将keepalived配置文件拷贝到etc下</p>
<pre><code>
cp /usr/local/src/keepalived-1.3.6/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

</code></pre>
<p>添加可执行权限</p>
<pre><code>
chmod +x /etc/init.d/keepalived

</code></pre>
<p>添加keepalived到开机启动</p>
<pre><code>
chkconfig --add keepalived  

chkconfig keepalived on

</code></pre>
<h3 class="clear">配置keepalived虚拟IP</h3>
<p>MASTER节点</p>
<pre><code>
global_defs {}vrrp_instance VI_1 {    state MASTER    interface eth0    virtual_router_id 51    priority 100    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        10.0.0.10/24    }}

</code></pre>
<p>BACKUP节点</p>
<pre><code>
global_defs {}vrrp_instance VI_1 {    state BACKUP    interface eth0    virtual_router_id 51    priority 99    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        10.0.0.10/24    }}

</code></pre>
<p>分别启动两台机器上的keepalived</p>
<pre><code>
service keepalived start

</code></pre>
<h3 class="clear">配置keepalived心跳检查</h3>
<p>MASTER节点</p>
<pre><code>
global_defs {} vrrp_script chk_health {    script "[[ ps -ef | grep nginx | grep -v grep | wc -l -ge 2 ]] && exit 0 || exit 1"    interval 1    weight -2} vrrp_instance VI_1 {    state MASTER    interface eth0    virtual_router_id 1    priority 100    advert_int 2    authentication {        auth_type PASS        auth_pass 1111    }     track_script {        chk_health    }     virtual_ipaddress {        10.0.0.10/24    }     notify_master "/usr/local/keepalived/sbin/notify.sh master"    notify_backup "/usr/local/keepalived/sbin/notify.sh backup"    notify_fault "/usr/local/keepalived/sbin/notify.sh fault"}

</code></pre>
<p>添加切换通知脚本</p>
<pre><code>
vi /usr/local/keepalived/sbin/notify.sh

!/bin/bash case "$1" in    master)        /usr/local/nginx/sbin/nginx        exit 0    ;;backup)        /usr/local/nginx/sbin/nginx -s stop        /usr/local/nginx/sbin/nginx        exit 0    ;;    fault)        /usr/local/nginx/sbin/nginx -s stop        exit 0    ;;    *)        echo 'Usage: notify.sh {master|backup|fault}'        exit 1    ;;esac

</code></pre>
<p>添加执行权限</p>
<pre><code>
chmod +x /usr/local/keepalived/sbin/notify.sh

global_defs {} vrrp_script chk_health {    script "[[ ps -ef | grep nginx | grep -v grep | wc -l -ge 2 ]] && exit 0 || exit 1"    interval 1    weight -2} vrrp_instance VI_1 {    state BACKUP    interface eth0    virtual_router_id 1    priority 99    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }     track_script {        chk_health    }     virtual_ipaddress {        10.0.0.10/24    }       notify_master "/usr/local/keepalived/sbin/notify.sh master"    notify_backup "/usr/local/keepalived/sbin/notify.sh backup"    notify_fault "/usr/local/keepalived/sbin/notify.sh fault"}

</code></pre>
<p>在第二台机器上添加notify.sh脚本</p>
<p>分别在两台机器上启动keepalived</p>
<pre><code>
service keepalived start

chkconfig keepalived on

</code></pre>
<h2 class="clear">Nginx增加插件模块</h2>
<p>安装依赖:kafkaC客户端</p>
<pre><code>
git clone https://github.com/edenhill/librdkafka

cd librdkafka

./configure

make

sudo make install

</code></pre>
<p>重新编译nginx把插件编译进去:等于重装</p>
<pre><code>
git clone https://github.com/brg-liuwei/ngx_kafka_module

如果没有configure就要重新下载nginx源码包

cd /path/to/nginx

./configure --add-dynamic-module=/path/to/ngx_kafka_module

sudo make

sudo make install

或者:只make,然后把objs/nginx拷贝到nginx安装目录去.

</code></pre>
<p>然后在nginx.conf中第一行增加</p>
<pre><code>
load_module /usr/local/nginx/modules/ngx_http_kafka_module.so;

</code></pre>
<p>sudo nginx -t 如果报:</p>
<pre><code>
nginx: [emerg] dlopen() "/usr/local/nginx/modules/ngx_http_kafka_module.so" failed (librdkafka.so.1: cannot open shared object file: No such file or directory)

</code></pre>
<p>需要做动态链接库的软连:不要做到/bin/下而是/lib/下</p>
<pre><code>
sudo ln -s /usr/local/lib/librdkafka.so /lib/librdkafka.so.1

</code></pre>
<p>重新加载配置:</p>
<pre><code>
sudo nginx -s reload

</code></pre>
<h1 class="clear">引用</h1>
<h1 class="clear">社交</h1>
<p>每日都有工作和生活记录,赏一个

<img decoding="async" src="https://upload-images.jianshu.io/upload_images/21597556-f8bd3684d9a5deb0.png" data-src="https://chevereto.mypicbed.top:11443/images/2020/03/03/a73c4baf7cf83500f0e952e513e97551.png" alt="收款码" data-was-processed="true"></p>
</div>

<div>
<h2 class="clear">发布者</h2>

<div>
    <h3>majia</h3>

    <p>
        本人计算机专业毕业10年程序员,承接电脑组装,网络维修,电商代购,网站建设,数据0-1及1-10的建设和支持,it技术咨询,家用NAS搭建,it教育培训的单子         <a href="https://majiablog.cn/author/majia/" rel="author" target="_top">
            查看所有由majia发布的文章         </a>
    </p><!-- .author-bio -->

</div><!-- .author-description -->

</div>

<!-- .entry-footer -->

</article><blockquote><p>本文使用 <a href="https://www.jianshu.com/p/5709df6fb58d" class="internal">文章同步助手</a> 同步</p></blockquote>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容