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閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容