[JavaEE] 狒狒都能懂的Nginx教程 for Mac

前文鏈接

[JavaEE] 搭建SpringCloud環(huán)境 進入微服務時代
http://www.reibang.com/p/a0365a635975
溫馨提示:本文是基于前文的擴展 沒有基礎(chǔ)的新手可以先去學習上文

一.簡介

最近玩了玩Nginx感覺體驗還不錯 只是網(wǎng)上的文章有些讓我迷惑 所以我來寫一篇比較簡潔的文章記錄一下

Nginx (engine x) 是一個高性能的HTTP反向代理服務,也是一個IMAP/POP3/SMTP服務刻撒。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發(fā)的椒惨,第一個公開版本0.1.0發(fā)布于2004年10月4日谍椅。

通俗的講 就是一個服務器 我們在開發(fā)中主要用于做反向代理負載均衡功能 下面就跟著我們的鏡頭一起來看吧!

二.安裝

Nginx官網(wǎng): http://nginx.org/en/

本文基于的環(huán)境是macOS 10.13.6

所以這里只講述Mac上的安裝方法Windows請自行安裝

1.安裝Homebrew

Homebrew是一套非常好用的包管理工具 我們可以直接使用它來安裝Nginx

首先在終端執(zhí)行

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

一行代碼完事 安裝好之后 輸入brew查看是否安裝正確

2.安裝Nginx

很簡單 在終端中輸入命令

brew install Nginx

但是在安裝過程中有可能遇到一個錯誤


問題出在了文件夾訪問權(quán)限上 我們使用chmod命令來給文件夾授權(quán)

sudo chmod 777 /usr/local/sbin

授權(quán)之后再次執(zhí)行安裝即可

brew install Nginx

我們看到下圖的提示就說明安裝成功了


二.開始使用

1.讓我們跑起來

經(jīng)過上述步驟 我們的Nginx已經(jīng)安裝完畢了 之后我們來啟動一下吧 直接在終端中輸入:

nginx

如果沒有任何錯誤提示 證明已經(jīng)啟動成功了...
我們打開localhost:8080來訪問一下

看到如上圖的樣子說明Nginx已經(jīng)啟動成功了 好了下課 - - (開玩笑的)

接下來你有可能會有疑問 接下來我們用它做啥子呢?

我在文章開頭已經(jīng)說過了Nginx主要實現(xiàn)兩個功能反向代理負載均衡

2.反向代理

什么是反向代理呢? 其實很好理解 就是通過Nginx轉(zhuǎn)發(fā)請求到你其他的接口 以達到隱藏服務器真實地址的功能

下面我們就來配置一下 首先定位到配置文件路徑

/usr/local/etc/nginx/nginx.conf 

command + shift + g 直接追過去

之后我們會看到一個nginx.conf


先別急 首先我們把這個文件復制一份 防止改壞了(程序員必備思想 - -)

之后用文本編輯器打開 可以看到一大坨代碼 我把注釋的地方都刪了


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

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

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

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

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    include servers/*;
}

我們可以看見有一個叫server的字段 我們在這里面就可以配置服務器相關(guān)的東西了

localhost 服務器監(jiān)聽端口號

好的我們接下來就來配置一下反向代理 我們只需要在server里面的location中添加一個proxy_pass [空格] 你的服務器地址即可

server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://localhost:8082;
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

我這里在本地開了個8082端口的微服務 你們自行開啟 如果不會 請學習我的springcloud文章5分鐘搭建出微服務
http://www.reibang.com/p/a0365a635975

我們修改完配置之后需要重新啟動Nginx
首先結(jié)束進程

nginx -s stop

然后重新啟動

nginx

好的 我們來試驗一下效果吧 這里不要忘了 修改完配置文件必須重啟Nginx才能生效

我們可以看到 我訪問的是Nginx8080端口 而我的服務是在8082上面的 這時Nginx會把請求轉(zhuǎn)發(fā)到8082讓我可以訪問到服務 可以看到網(wǎng)頁上寫著8082這是我在服務內(nèi)部打印的端口

我們成功訪問了接口 但是并沒有暴露出服務器的地址 這就是所謂的反向代理 你請求給Nginx它幫你轉(zhuǎn)發(fā)到你的本地服務上去

3.負載均衡

負載均衡就是把用戶的請求 分攤到功能相同的不同服務器上去 來減輕單個服務器的壓力 我想有些人到這里應該不太明白 我舉個例子解釋一下

百度這個網(wǎng)站每天有幾億人進行訪問 這么龐大的訪問量往往用一個服務器是不可能完成快速響應的 所以百度使用了集群策略 買了100臺服務器 每個服務器都能提供搜索服務 用戶訪問百度的時候 會按照一定邏輯 隨機訪問其中一個 這樣就不至于造成單個壓力過大而宕機了 反過來說 即使單個服務器宕機后 還有99個服務器可以服務 所以搜索功能是不受影響的

這篇文章我用本地來模擬一下負載均衡 我從本地開兩個服務:8082和:8083做集群

之后我們來簡單配置一下nginx.conf文件

    upstream jiqun {
        server localhost:8082;
        server localhost:8083;
    }

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://jiqun;
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

配置中可以看到 首先聲明兩個服務 起個別名為jiqun之后我們修改proxy_passhttp://jiqun就可以了 這樣我們訪問接口的時候 就會隨機轉(zhuǎn)發(fā)到這兩個相同的服務上去 實現(xiàn)負載均衡了

圖1

我們可以看到 訪問同一個網(wǎng)址 會在兩個不同端口的微服務之間來回切換 說明我們已經(jīng)實現(xiàn)了負載均衡

好的 接下來 我們來引入一個概念權(quán)重

假如我們有兩個服務器
一個處理能力強
一個處理能力弱

我們希望讓處理能力強的服務器 多接收一些用戶請求 所以我們就要給nginx配置權(quán)重

upstream jiqun {
        server localhost:8082 weight=2;
        server localhost:8083 weight=1;
}

weight就是權(quán)重 配置為2的權(quán)重要比1高 我們來實際看一下效果 好的重啟Nginx 我們來看看效果

圖2

我看一下圖2
1.訪問4次8082
2.訪問2次8083
3.循環(huán)

而沒有配置的權(quán)重的圖1
1.訪問2次8082
2.訪問2次8083
3.循環(huán)

所以沒有配置過權(quán)重 默認就是同樣的權(quán)重 好了 這就是Nginx最基本的配置實現(xiàn)了

finally enjoy it.

by objcat 2018.11.21

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硼啤,一起剝皮案震驚了整個濱河市娘纷,隨后出現(xiàn)的幾起案子惜索,更是在濱河造成了極大的恐慌氛悬,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粗悯,死亡現(xiàn)場離奇詭異虚循,居然都是意外死亡,警方通過查閱死者的電腦和手機样傍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門横缔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衫哥,你說我怎么就攤上這事茎刚。” “怎么了撤逢?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵膛锭,是天一觀的道長粮坞。 經(jīng)常有香客問我,道長初狰,這世上最難降的妖魔是什么莫杈? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮跷究,結(jié)果婚禮上姓迅,老公的妹妹穿的比我還像新娘敲霍。我一直安慰自己俊马,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布肩杈。 她就那樣靜靜地躺著柴我,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扩然。 梳的紋絲不亂的頭發(fā)上艘儒,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音夫偶,去河邊找鬼界睁。 笑死,一個胖子當著我的面吹牛兵拢,可吹牛的內(nèi)容都是我干的翻斟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼说铃,長吁一口氣:“原來是場噩夢啊……” “哼访惜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腻扇,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤债热,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后幼苛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窒篱,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年舶沿,在試婚紗的時候發(fā)現(xiàn)自己被綠了墙杯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡暑椰,死狀恐怖霍转,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情一汽,我是刑警寧澤避消,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布低滩,位于F島的核電站,受9級特大地震影響岩喷,放射性物質(zhì)發(fā)生泄漏恕沫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一纱意、第九天 我趴在偏房一處隱蔽的房頂上張望婶溯。 院中可真熱鬧,春花似錦偷霉、人聲如沸迄委。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叙身。三九已至,卻和暖如春硫狞,著一層夾襖步出監(jiān)牢的瞬間信轿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工残吩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留财忽,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓泣侮,卻偏偏與公主長得像即彪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旁瘫,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容