nginx简介及安装

【简介】
Nginx是一款轻量级的文本反向代理服务器及电子邮件代理服务器,其特点是内存少,并发高。
【工作原理】
Nginx由内核和模块组成,完成工作是通过查找配置文件将客户端请求映射到一个location block(location是用于URL匹配的命令),location配置的命令会启动不同模块完成工作。

Nginx模块分为核心模块,基础模块和第三方模块。
(1) 核心模块:HTTP模块、EVENT模块(事件)、MAIL模块。
(2)基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块、HTTP Rewrite模块。
(3) 第三方模块:HTTP Upstream Request Hash模块、Notice模块、HTTP Access Key模块。

2017-05-19_164844.png

【用途】
反向代理,负载均衡,动静分离

【性能优化】
web服务器,处理静态文件、索引文件以及自动索引效率高。
(1):代理服务器,快速高效反向代理,提升网站性能。
(2):b负载均衡器,内部支持Rails和PHP,也可支持HTTP代理服务器,对外进行服务。同时支持简单容错和利用算法进行负载均衡。
(3):性能方面,Nginx专门为性能设计,实现注重效率。采用Poll模型,可以支持更多的并发连接,并在大并发时占用很低内存。
(4):稳定性方面,采用分阶段资源分配技术,使CPU资源占用率低。
(5):高可用性方面,支持热备,启动迅速。
【安装】
准备:nginx.tar.gz
环境:nginx需要依赖gcc,pcre和zlib环境

yum  install gcc-c++ 

yum install pcre
yum install pcre-devel

yum install zlib
yum install zilb-devel

注意:如果在本机安装centos虚拟机无网络,请将网络模式调节为NET模式,并将System eth0 的IPV4 Settings模式调节为Automatic模式

2017-05-17_211720.png

开始安装nginx

解压安装
    tar -xzvf nginx-1.6.2.tar.gz
    cd nginx-1.6.2
    ./configure --prefix=/usr/local/nginx
    make&&make install

启动
cd /usr/local/nginx/sbin
./nginx

./nginx -s stop
./nginx -s reload

访问:
本虚拟机访问:localhost/
win访问:ip/

2017-05-17_214545.png

【目录】

2017-05-17_214812.png

【配置】
nginx的配置在nginx的conf目录下(主要关注nginx.conf文件即可)

2017-05-17_220655.png

这里也模拟一个服务配置:

server {
        listen       8888;
        server_name  hadoop;

        location / {
            root   html;
            index  lvfang.html;
        }
    }

确保要有相应的资源,这里确保html下有lvfang.html文件

配置后访问8888端口的结果

2017-05-17_223523.png

【日志】

nginx的日志存放在logs文件下

access.log    成功日志
error.log     失败日志
nginx.pid     nginx的id


日志配置也是在conf下的nginx.conf文件中

在nginx.conf中的server配置项中有一个access_log配置内容如下:
    ccess_log  logs/host.access.log  main;
表示成功日志的输出位置为 logs/host.access.log,日志格式为main格式(全局的)

这里可以查看并放开nginx.conf上被注释的main格式内容

 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

两个server的配置
![2017-05-17_230009.png](http://upload-images.jianshu.io/upload_images/2608446-f64136fe03ab0b88.png?
![Uploading 2017-05-17_230112_282253.png . . .]imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

两个server的日志输出

2017-05-17_230112.png

main格式配置:

2017-05-17_224903.png

【日志切分及定时备份】

第一步:如何实现日志切分,编写shell脚本
第二步:定时任务对脚本进行调度     crontab -e

shell脚本内容

#!/bin/sh

BASE_DIR=/usr/local/nginx
BASE_FILE_NAME=access_80.log

CURRENT_PATH=$BASE_DIR/logs
BAK_PATH=$BASE_DIR/datalogs

CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME
BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`
BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME
echo $BAK_FILE

$BASE_DIR/sbin/nginx -s stop

mv $CURRENT_FILE $BAK_FILE

$BASE_DIR/sbin/nginx

以上shell脚本是每分钟备份一下日志


定时调度:
crontab -e
*/1 * * * * sh /usr/local/nginx/sbin/log.sh  #*/表示一分钟定时执行一次log.sh脚本


crontab定时执行格式
基本格式 : 
*  *  *  *  *  command 
分 时 日 月 周 命令 
第1列表示分钟1~59 每分钟用*或者 */1表示 
第2列表示小时1~23(0表示0点) 
第3列表示日期1~31 
第4列表示月份1~12 
第5列标识号星期0~6(0表示星期天) 
第6列要运行的命令 
具体的 crontab -e时间格式执行命令查看


http://www.jb51.net/LINUXjishu/19905.html

定时结果:

2017-05-17_233054.png

【反向代理配置】

server {
        listen       9999;
        server_name  localhost;

        access_log  logs/access_9999.log  main;

        location / {
            root   html;
            index  index.html;
        }

        location ~ \.jsp$ {
             proxy_pass http://192.168.22.128:8080;
        }

    }
2017-05-20_201931.png

反向代理案例:访问nginx,转向tomcat
修改nginx配置:

添加location

 location ~ \.jsp$ {
             proxy_pass http://192.168.22.128:8080;
        }

tomcat/webapps/ROOR下添加测试页面 test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Page</title>
</head>
<body>
host:192.168.22.128<br/>
port:8080<br/>
Test1 Page!!!<br/>
remote ip :  <%-- <%=request.getHeader("X-real-ip") %> --%> <br/>
nginx server ip : <%=request.getRemoteAddr()%>
</body>
</html>

重启nginx ./nginx -s reload
启动tomcat

正常访问tomcat
192.168.22.128:8080

2017-05-20_202733.png

正常访问测试页面192.168.22.128:8080/test.jsp

2017-05-20_203423.png

nginx反向代理访问192.168.22.128:9999/test.jsp

2017-05-20_203327.png

【负载均衡配置】

注意:这里upstream与server是平级

  upstream myapp {
        server 192.168.22.128:8080 weight=1 max_fails=2 fail_timeout=30s;
        server 192.168.22.131:8080 weight=1 max_fails=2 fail_timeout=30s;
    }

server {
        listen       8888;
        server_name  hadoop;

        access_log  logs/access_8888.log  main;

        location / {
            proxy_set_header X-real-ip $remote_addr;
            proxy_pass http://myapp;

            root   html;
            index  index.html;
        }
    }
2017-05-20_195635.png

【具体案例】
两台机器:192.168.22.128,192.168.22.131.实现访问nginx时第一次访问128,第二次访问131,相互间隔访问,负载均衡
准备:两个tomcat
给tomcat/webapps/ROOT下放测试页面test.jsp

test.jsp内容

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Page</title>
</head>
<body>
host:192.168.22.131<br/>
port:8080<br/>
Test1 Page!!!<br/>
remote ip :  <%-- <%=request.getHeader("X-real-ip") %> --%> <br/>
nginx server ip : <%=request.getRemoteAddr()%>
</body>
</html>

分别开启两个tomcat并访问:

2017-05-20_200854.png

修改nginx配置为以上负载均衡配置

upstream myapp {
        server 192.168.22.128:8080 weight=1 max_fails=2 fail_timeout=30s;
        server 192.168.22.131:8080 weight=1 max_fails=2 fail_timeout=30s;
    }

server {
        listen       8888;
        server_name  hadoop;

        access_log  logs/access_8888.log  main;

        location / {
            proxy_set_header X-real-ip $remote_addr;
            proxy_pass http://myapp;

            root   html;
            index  index.html;
        }

    }

重启nginx:./nginx -s reload

测试负载均衡:http://192.168.22.128:8888/test.jsp 重复访问

2017-05-20_201235.png
2017-05-20_201250.png

你会发现访问的地址完全一样,但是访问的tomcat在来回切换

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

推荐阅读更多精彩内容