前端必須知道的Nginx的常用配置

Nginx主要功能

負載均衡

反向代理

動靜分離

配置https

負載均衡

負載均衡是一門計算機網絡技術,主要用來優化資源使用、最大化吞吐率、最小化響應時間、同時避免過載的目的。

如果一個網站只有一臺服務器的話,如果這臺服務器宕機了,那么整個網站將無法正常訪問。當訪問網站人數過多,并發量達到一定規模,超過服務器性能的極限,整個網站也將無法訪問。而負載均衡就是用來解決這一類的問題。

image

負載均衡是通過后端引入一個負載均衡器和至少一個額外的web服務器來緩解這類問題(增加的web服務器和原本的web服務器提供相同的內容)。用戶訪問的時候,先訪問到負載均衡器,再通過負載均衡器將請求轉發給后臺服務器。

image

通過這種方法,當有一臺服務器宕機時,負載均衡器就分配其他的服務器給用戶,極大的增加的網站的穩定性。

負載均衡器主要可以轉發http、https、tcp、udp四種請求規則

負載均衡器如何給用戶分配服務器? 負載均衡器有多種負載均衡算法,基本就是給每臺服務器一個不同的權重,通過權重來給用戶分配服務器。

負載均衡不需要前端進行配置,主要是服務端進行配置,前端稍作了解即可。

反向代理

反向代理是前端經常會用到的一項功能,主要是為了解決瀏覽器跨域訪問的問題。當協議、域名、端口號有一項或多項不同時,便違反了同源策略,需要跨域。前端跨域用的較多的有:

1.jsonp跨域: 使用html的<script>標簽可以引入第三方的js文件,所以我們可以通過

來繞過跨域的限制。但是需要注意的是,jsonp只支持get請求。

<script src="http://后臺接口"></script>

2.webpack反向代理: 前端開發中,基于webpack配置環境的spa頁面已經是一種趨勢,webpack內置的proxy可以幫助我們在開發環境調試接口時將我們的地址代理到后臺服務地址,解決跨域問題。配置如下

proxyTable: {'/api': {

   target:'http://192.168.xxx.xxx:8080',changeOrigin: true            }     

}

這段代碼的含義就是,當前端訪問接口匹配到'/api'時,將代理到'http://192.168.xxx.xxx:8080'服務端地址,如果前臺的接口名為/api/restful,代理的請求路徑將是'http://192.168.xxx.xxx:8080/api/restful'。

3.使用nginx進行反向代理

前端開發完成,對代碼進行打包后,webpack就無法使用了。這個時候我們手里只有html、css、js等靜態文件,后臺接口地址都會訪問不到。這個時候nginx就登場了,nginx反向代理配置和webpack大同小異,匹配到動態的地址時將請求轉發到一個服務器地址實現跨域。具體流程如下:

  1. 訪問nginx官網,下載nginx到本地

  2. 將打包完成的代碼放置在nginx的html目錄下

  3. 打開conf文件夾下的nginx.conf文件,配置如下:


server {   
         listen3000;    //監聽的本地端口  

          server_name  localhost;

          location/api{        //匹配到/api開頭的接口時,轉發到下面的服務器地址       

          root  html;          

          proxy_pass  http://192.168.xxx.xxx:8080;    //服務器地址          

  }
        location=/ {

        root  html;       
        index  index.htm  index.html;  //默認主頁    }

# 所有靜態請求都由nginx處理,存放目錄為html 
 location~ \.(htm|html|js|css|jpg|png|gif|eot|svg|ttf|woff|woff2)$ {       
              root    html;      //配置靜態資源地址    }                      
              error_page   500 502 503 504/50x.html;
              location= /50x.html {    
                    root  html;   
               }
}

動靜分離

動靜分離是為了減少不必要的請求已減少資源的浪費、請求的延時。

舉個例子,假如我們所有的前臺數據都從后臺獲取,我們訪問百度首頁時,如果首頁有一張背景圖,那么我們每個人每次進入首頁時都要去請求接口獲取這張背景圖,而首頁的訪問量是巨大的,每次都為了一張背景圖去請求同一個接口對于資源的消耗不可計數,為了減少資源的損耗、加快網頁的加載速度,動靜分離由此而生。

像這種靜態資源,前端都會直接保存在本地文件之中,每次進入首頁的時候從本地文件內讀取靜態圖片資源,動態數據再通過反向代理去服務器端獲取展示。具體配置如下:


location ~ \.(htm|html|js|css|jpg|png|gif|eot|svg|ttf|woff|woff2)$ {      root    html;      //配置靜態資源地址 }

當匹配到上述后綴名時,直接去html內獲取靜態資源,不向后臺發起請求。

配置https服務

微信小程序現在越來越火,大批前端開發進軍微信小程序,但是微信小程序只支持https請求,這是一個問題。但當你看完這篇文章,這將不再是阻擋你的一座大山。

要配置https服務,流程具體如下:

  1. 申請證書,便宜ssl可以申請三個月免費ssl證書,申請過程請按照官方提示步驟

  2. 申請完成后下載nginx版本的證書至本地,一個crt文件一個key文件,crt為證書,key為密鑰

  3. 配置nginx,如下:

server { listen443ssl;//監聽443端口,因為443端口是https的默認端口。80為http的默認端口server_name www.domain.com;//配置域名ssl_certificate 證書的絕對路徑; ssl_certificate_key 密鑰的絕對路徑;# location / {//反向代理的服務器地址,視情況進行配置# proxy_pass http://112.35.xxx.xxx;# } }

總結

最后,我們走一遍整個流程

image

1.用戶輸入http://域名,默認80端口

2.nginx監聽到80端口被訪問,匹配到域名為www.dream.com,將服務代理到http://192.168.3.10:8080

3.服務器返回頁面資源

4.用戶輸入https://二級域名,默認端口為443

5.nginx監聽443端口,匹配到相應域名,進行證書驗證,將服務代理到指定服務器

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容