亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本項目是一個 Nginx 極簡教程,目的在于幫助新手快速入門 Nginx。

示例Demo:

https://github.com/dunwu/nginx-tutorial/tree/master/demos

Demo目錄中的示例模擬了工作中的一些常用實戰(zhàn)場景,并且都可以通過腳本一鍵式啟動,讓您可以快速看到演示效果。

簡介

什么是 Nginx?

Nginx (engine x) 是一款輕量級的 Web 服務(wù)器 、反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器。

 

Nginx 極簡教程(快速入門)

 

 

什么是反向代理?

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

 

Nginx 極簡教程(快速入門)

 

 

Nginx 入門

詳細(xì)安裝方法請參考:

https://github.com/dunwu/nginx-tutorial/blob/master/install-nginx.md

nginx 的使用比較簡單,就是幾條命令。

常用到的命令如下:

nginx -s stop 快速關(guān)閉Nginx,可能不保存相關(guān)信息,并迅速終止web服務(wù)。
nginx -s quit 平穩(wěn)關(guān)閉Nginx,保存相關(guān)信息,有安排的結(jié)束web服務(wù)。
nginx -s reload 因改變了Nginx相關(guān)配置,需要重新加載配置而重載。
nginx -s reopen 重新打開日志文件。
nginx -c filename 為 Nginx 指定一個配置文件,來代替缺省的。
nginx -t 不運行,僅僅測試配置文件。nginx 將檢查配置文件的語法的正確性,并嘗試打開配置文件中所引用到的文件。
nginx -v 顯示 nginx 的版本。
nginx -V 顯示 nginx 的版本,編譯器版本和配置參數(shù)。

如果不想每次都敲命令,可以在 nginx 安裝目錄下新添一個啟動批處理文件startup.bat,雙擊即可運行。內(nèi)容如下:

@echo off
rem 如果啟動前已經(jīng)啟動nginx并記錄下pid文件,會kill指定進(jìn)程
nginx.exe -s stop
rem 測試配置文件語法正確性
nginx.exe -t -c conf/nginx.conf
rem 顯示版本信息
nginx.exe -v
rem 按照指定配置去啟動nginx
nginx.exe -c conf/nginx.conf

如果是運行在 linux 下,寫一個 shell 腳本,大同小異。

Nginx 實戰(zhàn)

我始終認(rèn)為,各種開發(fā)工具的配置還是結(jié)合實戰(zhàn)來講述,會讓人更易理解。

Http 反向代理

我們先實現(xiàn)一個小目標(biāo):不考慮復(fù)雜的配置,僅僅是完成一個 http 反向代理。

nginx.conf 配置文件如下:

注:conf/nginx.conf 是 nginx 的默認(rèn)配置文件。你也可以使用 nginx -c 指定你的配置文件

Nginx 極簡教程(快速入門)

 


Nginx 極簡教程(快速入門)

 


Nginx 極簡教程(快速入門)

 


Nginx 極簡教程(快速入門)

 

好了,讓我們來試試吧:

  1. 啟動 webApp,注意啟動綁定的端口要和 nginx 中的 upstream 設(shè)置的端口保持一致。
  2. 更改 host:在 C:windowsSystem32driversetc 目錄下的 host 文件中添加一條 DNS 記錄127.0.0.1 www.helloworld.com
  3. 啟動前文中 startup.bat 的命令
  4. 在瀏覽器中訪問 www.helloworld.com,不出意外,已經(jīng)可以訪問了。

Https 反向代理

一些對安全性要求比較高的站點,可能會使用 HTTPS(一種使用 ssl 通信標(biāo)準(zhǔn)的安全 HTTP 協(xié)議)。

這里不科普 HTTP 協(xié)議和 SSL 標(biāo)準(zhǔn)。但是,使用 nginx 配置 https 需要知道幾點:

  • HTTPS 的固定端口號是 443,不同于 HTTP 的 80 端口
  • SSL 標(biāo)準(zhǔn)需要引入安全證書,所以在 nginx.conf 中你需要指定證書和它對應(yīng)的 key

其他和 http 反向代理基本一樣,只是在 Server 部分配置有些不同。

Nginx 極簡教程(快速入門)

 

負(fù)載均衡

前面的例子中,代理僅僅指向一個服務(wù)器。

但是,網(wǎng)站在實際運營過程中,大部分都是以集群的方式運行,這時需要使用負(fù)載均衡來分流。nginx 也可以實現(xiàn)簡單的負(fù)載均衡功能。

假設(shè)這樣一個應(yīng)用場景:將應(yīng)用部署在 192.168.1.11:80、192.168.1.12:80、192.168.1.13:80 三臺 linux 環(huán)境的服務(wù)器上。網(wǎng)站域名叫 www.helloworld.com,公網(wǎng) IP 為 192.168.1.11。在公網(wǎng) IP 所在的服務(wù)器上部署 nginx,對所有請求做負(fù)載均衡處理(下面例子中使用的是加權(quán)輪詢策略)。

nginx.conf 配置如下:

Nginx 極簡教程(快速入門)

 


Nginx 極簡教程(快速入門)

 

負(fù)載均衡策略

Nginx 提供了多種負(fù)載均衡策略,讓我們來一一了解一下:

負(fù)載均衡策略在各種分布式系統(tǒng)中基本上原理一致,對于原理有興趣,不妨參考:

https://dunwu.github.io/JAVAweb/#/theory/load-balance

輪詢

upstream bck_testing_01 {
 # 默認(rèn)所有服務(wù)器權(quán)重為 1
 server 192.168.250.220:8080
 server 192.168.250.221:8080
 server 192.168.250.222:8080
}

加權(quán)輪詢

upstream bck_testing_01 {
 server 192.168.250.220:8080 weight=3
 server 192.168.250.221:8080 # default weight=1
 server 192.168.250.222:8080 # default weight=1
}

最少連接

upstream bck_testing_01 {
 least_conn;
 # with default weight for all (weight=1)
 server 192.168.250.220:8080
 server 192.168.250.221:8080
 server 192.168.250.222:8080
}

加權(quán)最少連接

upstream bck_testing_01 {
 least_conn;
 server 192.168.250.220:8080 weight=3
 server 192.168.250.221:8080 # default weight=1
 server 192.168.250.222:8080 # default weight=1
}

IP Hash

upstream bck_testing_01 {
 ip_hash;
 # with default weight for all (weight=1)
 server 192.168.250.220:8080
 server 192.168.250.221:8080
 server 192.168.250.222:8080
}

普通 Hash

upstream bck_testing_01 {
 hash $request_uri;
 # with default weight for all (weight=1)
 server 192.168.250.220:8080
 server 192.168.250.221:8080
 server 192.168.250.222:8080
}

網(wǎng)站有多個 webapp 的配置

當(dāng)一個網(wǎng)站功能越來越豐富時,往往需要將一些功能相對獨立的模塊剝離出來,獨立維護(hù)。這樣的話,通常,會有多個 webapp。

舉個例子:假如 www.helloworld.com 站點有好幾個 webapp,finance(金融)、product(產(chǎn)品)、admin(用戶中心)。訪問這些應(yīng)用的方式通過上下文(context)來進(jìn)行區(qū)分:

www.helloworld.com/finance/

www.helloworld.com/product/

www.helloworld.com/admin/

我們知道,http 的默認(rèn)端口號是 80,如果在一臺服務(wù)器上同時啟動這 3 個 webapp 應(yīng)用,都用 80 端口,肯定是不成的。所以,這三個應(yīng)用需要分別綁定不同的端口號。

那么,問題來了,用戶在實際訪問 www.helloworld.com 站點時,訪問不同 webapp,總不會還帶著對應(yīng)的端口號去訪問吧。所以,你再次需要用到反向代理來做處理。

配置也不難,來看看怎么做吧:

Nginx 極簡教程(快速入門)

 

靜態(tài)站點

有時候,我們需要配置靜態(tài)站點(即 html 文件和一堆靜態(tài)資源)。

舉例來說:如果所有的靜態(tài)資源都放在了 /app/dist 目錄下,我們只需要在 nginx.conf 中指定首頁以及這個站點的 host 即可。

配置如下:

Nginx 極簡教程(快速入門)

 

然后,添加 HOST:

127.0.0.1 static.zp.cn

此時,在本地瀏覽器訪問 static.zp.cn ,就可以訪問靜態(tài)站點了。

搭建文件服務(wù)器

有時候,團(tuán)隊需要歸檔一些數(shù)據(jù)或資料,那么文件服務(wù)器必不可少。使用 Nginx 可以非常快速便捷的搭建一個簡易的文件服務(wù)。

Nginx 中的配置要點:

  • 將 autoindex 開啟可以顯示目錄,默認(rèn)不開啟。
  • 將 autoindex_exact_size 開啟可以顯示文件的大小。
  • 將 autoindex_localtime 開啟可以顯示文件的修改時間。
  • root 用來設(shè)置開放為文件服務(wù)的根路徑。
  • charset 設(shè)置為 charset utf-8,gbk;,可以避免中文亂碼問題(windows 服務(wù)器下設(shè)置后,依然亂碼,本人暫時沒有找到解決方法)。

一個最簡化的配置如下:

autoindex on;# 顯示目錄
autoindex_exact_size on;# 顯示文件大小
autoindex_localtime on;# 顯示文件時間
server {
 charset utf-8,gbk; # windows 服務(wù)器下設(shè)置后,依然亂碼,暫時無解
 listen 9050 default_server;
 listen [::]:9050 default_server;
 server_name _;
 root /share/fs;
}

解決跨域

web 領(lǐng)域開發(fā)中,經(jīng)常采用前后端分離模式。這種模式下,前端和后端分別是獨立的 web 應(yīng)用程序,例如:后端是 Java 程序,前端是 React 或 Vue 應(yīng)用。

各自獨立的 web app 在互相訪問時,勢必存在跨域問題。解決跨域問題一般有兩種思路:

  1. CORS

 

在后端服務(wù)器設(shè)置 HTTP 響應(yīng)頭,把你需要允許訪問的域名加入 Access-Control-Allow-Origin 中。

  1. jsonp

 

把后端根據(jù)請求,構(gòu)造 json 數(shù)據(jù),并返回,前端用 jsonp 跨域。

這兩種思路,本文不展開討論。

需要說明的是,nginx 根據(jù)第一種思路,也提供了一種解決跨域的解決方案。

舉例:www.helloworld.com 網(wǎng)站是由一個前端 app ,一個后端 app 組成的。前端端口號為 9000, 后端端口號為 8080。

前端和后端如果使用 http 進(jìn)行交互時,請求會被拒絕,因為存在跨域問題。來看看,nginx 是怎么解決的吧:

首先,在 enable-cors.conf 文件中設(shè)置 cors :

Nginx 極簡教程(快速入門)

 

接下來,在你的服務(wù)器中 include enable-cors.conf 來引入跨域配置:

Nginx 極簡教程(快速入門)

 

到此,就完成了。

作者:dunwu

github.com/dunwu/nginx-tutorial

分享到:
標(biāo)簽:Nginx
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定