日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

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

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

本項(xiàng)目是一個(gè) Nginx 極簡(jiǎn)教程,目的在于幫助新手快速入門 Nginx。

示例Demo:

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

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

簡(jiǎn)介

什么是 Nginx?

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

 

Nginx 極簡(jiǎn)教程(快速入門)

 

 

什么是反向代理?

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

 

Nginx 極簡(jiǎn)教程(快速入門)

 

 

Nginx 入門

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

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

nginx 的使用比較簡(jiǎn)單,就是幾條命令。

常用到的命令如下:

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 指定一個(gè)配置文件,來代替缺省的。
nginx -t 不運(yùn)行,僅僅測(cè)試配置文件。nginx 將檢查配置文件的語法的正確性,并嘗試打開配置文件中所引用到的文件。
nginx -v 顯示 nginx 的版本。
nginx -V 顯示 nginx 的版本,編譯器版本和配置參數(shù)。

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

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

如果是運(yùn)行在 linux 下,寫一個(gè) shell 腳本,大同小異。

Nginx 實(shí)戰(zhàn)

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

Http 反向代理

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

nginx.conf 配置文件如下:

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

Nginx 極簡(jiǎn)教程(快速入門)

 


Nginx 極簡(jiǎn)教程(快速入門)

 


Nginx 極簡(jiǎn)教程(快速入門)

 


Nginx 極簡(jiǎn)教程(快速入門)

 

好了,讓我們來試試吧:

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

Https 反向代理

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

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

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

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

Nginx 極簡(jiǎn)教程(快速入門)

 

負(fù)載均衡

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

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

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

nginx.conf 配置如下:

Nginx 極簡(jiǎn)教程(快速入門)

 


Nginx 極簡(jiǎn)教程(快速入門)

 

負(fù)載均衡策略

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

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

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)站有多個(gè) webapp 的配置

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

舉個(gè)例子:假如 www.helloworld.com 站點(diǎn)有好幾個(gè) 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)端口號(hào)是 80,如果在一臺(tái)服務(wù)器上同時(shí)啟動(dòng)這 3 個(gè) webapp 應(yīng)用,都用 80 端口,肯定是不成的。所以,這三個(gè)應(yīng)用需要分別綁定不同的端口號(hào)。

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

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

Nginx 極簡(jiǎn)教程(快速入門)

 

靜態(tài)站點(diǎn)

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

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

配置如下:

Nginx 極簡(jiǎn)教程(快速入門)

 

然后,添加 HOST:

127.0.0.1 static.zp.cn

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

搭建文件服務(wù)器

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

Nginx 中的配置要點(diǎn):

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

一個(gè)最簡(jiǎn)化的配置如下:

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

解決跨域

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

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

  1. CORS

 

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

  1. jsonp

 

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

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

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

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

前端和后端如果使用 http 進(jìn)行交互時(shí),請(qǐng)求會(huì)被拒絕,因?yàn)榇嬖诳缬騿栴}。來看看,nginx 是怎么解決的吧:

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

Nginx 極簡(jiǎn)教程(快速入門)

 

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

Nginx 極簡(jiǎn)教程(快速入門)

 

到此,就完成了。

作者:dunwu

github.com/dunwu/nginx-tutorial

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

網(wǎng)友整理

注冊(cè)時(shí)間:

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

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

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

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

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

答題星2018-06-03

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

全階人生考試2018-06-03

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

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

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

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

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

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定