Nginx安裝與使用(配置詳解)

前言

Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器甚垦,并在一個(gè)BSD-like 協(xié)議下發(fā)行艰亮。由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開發(fā)迄埃,供俄國大型的入口網(wǎng)站及搜索引擎Rambler(俄文:Рамблер)使用调俘。

其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng)先蒋,事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較
好竞漾。

什么是反向代理业岁?
通常的代理服務(wù)器笔时,只用于代理內(nèi)部網(wǎng)絡(luò)對Internet的連接請求允耿,客戶機(jī)必須指定代理服務(wù)器,并將本來要直接發(fā)送到Web服務(wù)器上的http請求發(fā)送到代理服務(wù)器中由代理服務(wù)器向Internet上的web服務(wù)器發(fā)起請求较锡,最終達(dá)到客戶機(jī)上網(wǎng)的目的蚂蕴。這就是所謂的正向代理骡楼,一般就直接叫代理君编。

反向代理(Reverse Proxy)則是指以代理服務(wù)器來接受internet上的連接請求吃嘿,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器兑燥,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端降瞳,此時(shí)代理服務(wù)器對外就表現(xiàn)為一個(gè)反向代理服務(wù)器挣饥。

Nginx 只做請求的轉(zhuǎn)發(fā),后臺(tái)有多個(gè)http服務(wù)器提供服務(wù)汛聚,nginx的作用就是把請求轉(zhuǎn)發(fā)給后面的服務(wù)器叹哭,決定把請求轉(zhuǎn)發(fā)給誰處理痕貌。


反向代理

一超升、安裝步驟

1.下載Nginx安裝包

可以到nginx官網(wǎng)下載廓俭,也可以直接使用命令下載:wget http://nginx.org/download/nginx-1.20.1.tar.gz

2.解壓及目錄

執(zhí)行命令:tar -zxvf nginx-1.20.1.tar.gz 對tar.gz安裝包進(jìn)行解壓研乒,解壓后進(jìn)到目錄:


? auto目錄:存放大量的腳本文件,或configure腳本程序相關(guān)
? conf目錄:存放nginx服務(wù)器的配置文件
? contrib目錄:存放其他機(jī)構(gòu)或組織貢獻(xiàn)的文檔資料
? html目錄:存放默認(rèn)網(wǎng)站文件
? man目錄:存放nginx的幫助文檔
? src目錄:存放nginx的源代碼
? CHANGES竿报、CHANGES.ru烈菌、LICENSE芽世、和README都是nginx服務(wù)器的相關(guān)文檔資料
? configure目錄:nginx自動(dòng)安裝腳本济瓢,用于檢查環(huán)境妹卿,生成編譯代碼需要的makefile文件

3.安裝依賴包

安裝nginx模塊依賴的軟件包:
? openssl-devel包:為nginx模塊提供密碼算法夺克、證書以及SSL協(xié)議等功能
? pcre-devel包:為nginx模塊提供正則表達(dá)式庫
? zlib-devel包:為nginx模塊提供數(shù)據(jù)壓縮用的函數(shù)庫
執(zhí)行命令yum -y install pcre-devel openssl-devel扒吁,而pcre-devel和zlib-devel會(huì)作為依賴自動(dòng)被安裝。

4.安裝nginx

1、切換到/home/soft/nginx/nginx-1.20.1路徑下盼铁,執(zhí)行./configure饶火,/configure用于對即將安裝的軟件進(jìn)行配置肤寝,檢查當(dāng)前的環(huán)境是否滿足安裝軟件的依賴關(guān)系鲤看,如圖:


執(zhí)行命令若出現(xiàn)./configure c compiler cc is not found,執(zhí)行命令yum -y install gcc gcc-c++ autoconf automake make即可

2慷吊、執(zhí)行make && make install命令


安裝成功溉瓶,切換到目錄/usr/local/nginx(默認(rèn)安裝路徑)

二、配置

1.服務(wù)啟動(dòng)

進(jìn)入sbin目錄胞锰,./nginx命令執(zhí)行nginx腳本兢榨,成功啟動(dòng)nginx


開放80端口凌那,瀏覽器打開虛擬機(jī)ip:80

2.nginx配置

conf目錄下帽蝶,除了nginx.conf励稳,其余配置文件驹尼,一般只需要使用默認(rèn)提供即可新翎。

nginx.conf文件結(jié)構(gòu)


? 全局塊:配置影響nginx全局的指令愁拭。一般有運(yùn)行nginx服務(wù)器的用戶組岭埠,nginx進(jìn)程pid存放路徑顺呕,日志存放路徑株茶,配置文件引入启盛,允許生成worker process數(shù)等僵闯。
? events塊:配置影響nginx服務(wù)器或與用戶的網(wǎng)絡(luò)連接鳖粟。有每個(gè)進(jìn)程的最大連接數(shù)向图,選取哪種事件驅(qū)動(dòng)模型處理連接請求榄攀,是否允許同時(shí)接受多個(gè)網(wǎng)路連接檩赢,開啟多個(gè)網(wǎng)絡(luò)連接序列化等。
? http塊:可以嵌套多個(gè)server趁曼,配置代理彰阴,緩存,日志定義等絕大多數(shù)功能和第三方模塊的配置簇抵。如文件引入碟摆,mime-type定義典蜕,日志自定義愉舔,是否使用sendfile傳輸文件轩缤,連接超時(shí)時(shí)間火的,單連接請求數(shù)等馏鹤。
? server塊:配置虛擬主機(jī)的相關(guān)參數(shù)湃累,一個(gè)http中可以有多個(gè)server脱茉。
? location塊:配置請求的路由琴许,以及各種頁面的處理情況。

具體配置

├──  worker_process表示工作進(jìn)程的數(shù)量锻梳,一般設(shè)置為cpu的核數(shù)

├──  worker_connections表示每個(gè)工作進(jìn)程的最大連接數(shù)

├── server{}塊定義了虛擬主機(jī)

    ├── listener監(jiān)聽端口

    ├── server_name監(jiān)聽域名

    ├── location{}是用來為匹配的 URI 進(jìn)行配置疑枯,URI 即語法中的“/uri/”荆永。location  / { }匹配任何查詢具钥,因?yàn)樗姓埱蠖家?/ 開頭骂删。

        ├── root指定對應(yīng)uri的資源查找路徑宁玫,這里html為相對路徑欧瘪,完整路徑為/usr/local/nginx/html/
        ├── index指定首頁index文件的名稱恋追,可以配置多個(gè)苦囱,以空格分開撕彤。如有多個(gè)羹铅,按配置順序查找职员。

示例:

########### 每個(gè)指令必須有分號(hào)結(jié)束焊切。#################
#user administrator administrators;  #配置用戶或者組专肪,默認(rèn)為nobody nobody痰憎。
#worker_processes 2;  #允許生成的進(jìn)程數(shù),默認(rèn)為1
#pid /nginx/pid/nginx.pid;   #指定nginx進(jìn)程運(yùn)行文件存放地址
error_log log/error.log debug;  #制定日志路徑芽死,級(jí)別。這個(gè)設(shè)置可以放入全局塊掌呜,http塊坪哄,server塊势篡,級(jí)別以此為:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #設(shè)置網(wǎng)路連接序列化禁悠,防止驚群現(xiàn)象發(fā)生,默認(rèn)為on
    multi_accept on;  #設(shè)置一個(gè)進(jìn)程是否同時(shí)接受多個(gè)網(wǎng)絡(luò)連接碍侦,默認(rèn)為off
    #use epoll;      #事件驅(qū)動(dòng)模型瓷产,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大連接數(shù),默認(rèn)為512
}
http {
    include       mime.types;   #文件擴(kuò)展名與文件類型映射表
    default_type  application/octet-stream; #默認(rèn)文件類型濒旦,默認(rèn)為text/plain
    #access_log off; #取消服務(wù)日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式
    access_log log/access.log myFormat;  #combined為日志格式的默認(rèn)值
    sendfile on;   #允許sendfile方式傳輸文件尔邓,默認(rèn)為off,可以在http塊齿尽,server塊灯节,location塊绵估。
    sendfile_max_chunk 100k;  #每個(gè)進(jìn)程每次調(diào)用傳輸數(shù)量不能大于設(shè)定的值贷岸,默認(rèn)為0,即不設(shè)上限躏救。
    keepalive_timeout 65;  #連接超時(shí)時(shí)間螟蒸,默認(rèn)為75s,可以在http少办,server诵原,location塊。
upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #熱備
    }
    error_page 404 https://www.baidu.com; #錯(cuò)誤頁
    server {
        keepalive_requests 120; #單連接請求上限次數(shù)蔓纠。
        listen       4545;   #監(jiān)聽端口
        server_name  127.0.0.1;   #監(jiān)聽地址       
        location  ~*^.+$ {       #請求的url過濾吗蚌,正則匹配,~為區(qū)分大小寫敷燎,~*為不區(qū)分大小寫箩言。
           #root path;  #根目錄
           #index vv.txt;  #設(shè)置默認(rèn)頁
           proxy_pass  http://mysvr;  #請求轉(zhuǎn)向mysvr 定義的服務(wù)器列表
           deny 127.0.0.1;  #拒絕的ip
           allow 172.18.5.54; #允許的ip           
        } 
    }
} 

上面是nginx的基本配置,需要注意的有以下幾點(diǎn):
1澄成、log_format myFormat相關(guān)
remote_addr 與http_x_forwarded_for 用以記錄客戶端的ip地址畏吓;
remote_user :用來記錄客戶端用戶名稱;
time_local : 用來記錄訪問時(shí)間與時(shí)區(qū)肾砂;
request : 用來記錄請求的url與http協(xié)議宏悦;
status : 用來記錄請求狀態(tài)包吝;成功是200源葫;
body_bytes_s ent :記錄發(fā)送給客戶端文件主體內(nèi)容大邢⑻谩;
http_referer :用來記錄從那個(gè)頁面鏈接訪問過來的荣堰;
http_user_agent :記錄客戶端瀏覽器的相關(guān)信息;

2振坚、驚群現(xiàn)象:一個(gè)網(wǎng)路連接到來薇搁,多個(gè)睡眠的進(jìn)程被同事叫醒,但只有一個(gè)進(jìn)程能獲得鏈接渡八,這樣會(huì)影響系統(tǒng)性能啃洋。

3、每個(gè)指令必須有分號(hào)結(jié)束屎鳍。

3.nginx命令

配置完成后重新啟動(dòng)nginx

nginx -t # 查看nginx狀態(tài)

nginx -s reload # 重新載入配置文件

nginx -s reopen # 重啟 Nginx

nginx -s stop # 停止 Nginx

創(chuàng)作不易裂允,關(guān)注、點(diǎn)贊就是對作者最大的鼓勵(lì)哥艇,歡迎在下方評論留言
求關(guān)注,定期分享Java知識(shí)僻澎,一起學(xué)習(xí),共同成長窟勃。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祖乳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子秉氧,更是在濱河造成了極大的恐慌眷昆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汁咏,死亡現(xiàn)場離奇詭異亚斋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)攘滩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門帅刊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漂问,你說我怎么就攤上這事赖瞒∨遥” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵栏饮,是天一觀的道長吧兔。 經(jīng)常有香客問我,道長袍嬉,這世上最難降的妖魔是什么境蔼? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮冬竟,結(jié)果婚禮上欧穴,老公的妹妹穿的比我還像新娘。我一直安慰自己泵殴,他們只是感情好涮帘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笑诅,像睡著了一般调缨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吆你,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天弦叶,我揣著相機(jī)與錄音,去河邊找鬼妇多。 笑死伤哺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的者祖。 我是一名探鬼主播立莉,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼七问!你這毒婦竟也來了蜓耻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤械巡,失蹤者是張志新(化名)和其女友劉穎刹淌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讥耗,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡有勾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了古程。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柠衅。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖籍琳,靈堂內(nèi)的尸體忽然破棺而出菲宴,到底是詐尸還是另有隱情贷祈,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布喝峦,位于F島的核電站势誊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谣蠢。R本人自食惡果不足惜粟耻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望眉踱。 院中可真熱鬧挤忙,春花似錦、人聲如沸谈喳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婿禽。三九已至赏僧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扭倾,已是汗流浹背淀零。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膛壹,地道東北人驾中。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像模聋,于是被迫代替她去往敵國和親肩民。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354