最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx分布式部署流程分析

 更新時(shí)間:2025年09月30日 11:52:59   作者:三口吃掉你  
文章介紹Nginx在分布式部署中的反向代理和負(fù)載均衡作用,用于分發(fā)請(qǐng)求、減輕服務(wù)器壓力及解決session共享問題,涵蓋配置方法、策略及Java項(xiàng)目應(yīng)用,并提及分布式事務(wù)的挑戰(zhàn),感興趣的朋友跟隨小編一起看看吧

分布式部署

分布式部署也叫集群或機(jī)群(多臺(tái)電腦整合在一起,都運(yùn)行相同的項(xiàng)目)。

Nginx

Nginx是做代理的,且Nginx是反向代理。(VPN是 正向代理)

Java中的代理

在Java設(shè)計(jì)模式中,代理模式是這樣定義的:給某個(gè)對(duì)象提供一個(gè)代理對(duì)象,并由代理對(duì)象控制原對(duì)象的引用。

代理分為正向代理和反向代理

正向代理與反向代理的核心區(qū)別,本質(zhì)上就是 “觀察角度” 和 “代理服務(wù)的目標(biāo)對(duì)象” 不同,而非代理本身有固定屬性。

很多時(shí)候,同一個(gè)代理節(jié)點(diǎn)在不同場(chǎng)景下,因觀察視角變化,可能同時(shí)扮演兩種角色,也就試說反向代理和正向代理可以是同一個(gè)代理,這正是兩者最易混淆的核心原因。

比如在當(dāng)前角度看一個(gè)代理是正向代理,從另一個(gè)角度來看該代理則是反向代理。路由器使用的既可以是反向代理也可以是正向代理。

正向代理

正向代理就是把代理操作放在客戶端。

反向代理

反向代理就是把代理操作放在服務(wù)器。

反向代理,其實(shí)客戶端對(duì)代理是無感知的,因?yàn)榭蛻舳瞬恍枰魏闻渲镁涂梢栽L問,我們只需要將請(qǐng)求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真實(shí)服務(wù)器IP地址。

百度百科的說法:反向代理(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ù)器。簡(jiǎn)單來說就是真實(shí)的服務(wù)器不能直接被外部網(wǎng)絡(luò)訪問,所以需要一臺(tái)代理服務(wù)器,而代理服務(wù)器能被外部網(wǎng)絡(luò)訪問的同時(shí)又跟真實(shí)服務(wù)器在同一個(gè)網(wǎng)絡(luò)環(huán)境,當(dāng)然也可能是同一臺(tái)服務(wù)器,端口不同而已。

Nginx應(yīng)用場(chǎng)景

我們做程序,會(huì)做一個(gè)前端vue項(xiàng)目(頁面),連接我們的java項(xiàng)目。java項(xiàng)目返回?cái)?shù)據(jù)給前端。
用戶訪問前端vue項(xiàng)目,這時(shí)會(huì)出現(xiàn)一個(gè)問題,訪問前端vue服務(wù)器的人太多了(假如是100萬),造成服務(wù)器壓力過大。

對(duì)此,我們可以在一臺(tái)新的服務(wù)器上再部署這個(gè)前端vue項(xiàng)目,讓其中50萬用戶訪問第一臺(tái)服務(wù)器的vue項(xiàng)目,讓另外50萬用戶訪問第二胎服務(wù)器的vue項(xiàng)目,減輕服務(wù)器壓力。

但問題是怎么讓其中50萬用戶訪問第一臺(tái)服務(wù)器的vue項(xiàng)目,讓另外50萬的用戶訪問第二胎服務(wù)器的vue項(xiàng)目。這就需要用到Nginx了。

用戶只需訪問Nginx,Nginx會(huì)幫我們做一個(gè)轉(zhuǎn)向,轉(zhuǎn)到兩臺(tái)服務(wù)器的前端vue項(xiàng)目。至于如何均衡的轉(zhuǎn)到這兩臺(tái)服務(wù)器,這就需要涉及到下面的負(fù)載均衡。

負(fù)載均衡

負(fù)載均衡也是Nginx常用的一個(gè)功能,負(fù)載均衡其意思就是分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。簡(jiǎn)單而言就是當(dāng)有2臺(tái)或以上服務(wù)器時(shí),根據(jù)規(guī)則隨機(jī)的將請(qǐng)求分發(fā)到指定的服務(wù)器上處理,負(fù)載均衡配置一般都需要同時(shí)配置反向代理,通過反向代理跳轉(zhuǎn)到負(fù)載均衡。而Nginx目前支持自帶3種負(fù)載均衡策略,還有2種常用的第三方策略。

Nginx安裝與啟動(dòng)

  1. 下載nginx包后解壓到某盤(如:D盤nginx文件夾下)。
  2. 在nginx目錄下,打開cmd,輸入命令start nginx.exe啟動(dòng)nginx,也可以雙擊nginx.exe啟動(dòng)。(反饋不明顯,只要做過啟動(dòng)操作,因該就已經(jīng)啟動(dòng)了)
  3. 瀏覽器輸入127.0.0.1,進(jìn)入nginx歡迎頁面
  4. 服務(wù)停止命令:nginx -s stop
  5. 服務(wù)重啟命令:nginx -s reload
  6. 一旦啟動(dòng),就無法停止(上面的命令不能用)。如果需要關(guān)閉,可直接在任務(wù)管理器找到nginx任務(wù)并關(guān)閉。

負(fù)載均衡簡(jiǎn)單設(shè)置

  1. 打開D:\nginx\conf目錄下nginx.conf文件
upstream servertest {
	server 192.168.1.146:8080 down;
	server 192.168.1.146:8081 weight=3;
	server 192.168.1.146:8082;
	server 192.168.1.146:8083 backup;
}
server {
	listen 8080; #監(jiān)聽端口
	server_name localhost; #監(jiān)聽地址
	location / {
		proxy_pass http://servertest; #請(qǐng)求轉(zhuǎn)向servertest 定義的服務(wù)器列表
		root html;
		index index.html index.htm;
	}
}
  • down:表示當(dāng)前的server暫時(shí)不參與負(fù)載,不會(huì)被訪問。
  • Weight:默認(rèn)為1。weight越大,負(fù)載的權(quán)重就越大,被訪問的概率也就越高。(開發(fā)中可以設(shè)置讓性能好的服務(wù)器被訪問概率更大)
  • max_fails:允許請(qǐng)求失敗的次數(shù)默認(rèn)為1。當(dāng)超過最大次數(shù)時(shí),返回proxy_next_upstream 模塊定義的錯(cuò)誤。
  • fail_timeout: max_fails 次失敗后,暫停的時(shí)間。
  • Backup:其它所有的非backup機(jī)器宕機(jī)或者忙的時(shí)候,請(qǐng)求backup機(jī)器(可理解為備用機(jī))。所以這臺(tái)機(jī)器壓力會(huì)最輕。
  • upstream 塊:
    • 網(wǎng)上下載的nginx的conf配置中沒有,需要自己手動(dòng)添加。
    • 這是定義負(fù)載均衡池的配置,名稱為testnginx(可自定義)。
    • 里面包含了服務(wù)器地址(IP+端口號(hào))。
    • Nginx 會(huì)按照默認(rèn)的輪詢策略(Round Robin)將請(qǐng)求分發(fā)到這些服務(wù)器。
  • server 塊:
    • listen 80;:nginx的端口設(shè)置。
    • server_name 127.0.0.1;:nginx的IP設(shè)置。
    • location / 塊:
      • 這是處理根路徑請(qǐng)求的配置。
      • proxy_pass http://testnginx:關(guān)鍵配置,將所有根路徑的請(qǐng)求轉(zhuǎn)發(fā)到前面定義的testnginx負(fù)載均衡池。
      • root html:指定靜態(tài)文件的根目錄。
      • index:指定默認(rèn)首頁文件。

Java項(xiàng)目使用nginx流程

現(xiàn)在大多都是前端在用Nginx,其實(shí)我們Java后端也能用Nginx,使用方法跟前端一樣。
可參考文章:分布式開發(fā)中最后的項(xiàng)目打包,分別設(shè)置使用不同的端口(因?yàn)槎际窃谧约弘娔X上運(yùn)行測(cè)試)進(jìn)行打包,比如一個(gè)使用81端口,一個(gè)使用82端口(項(xiàng)目代碼都一樣,只是使用的端口號(hào)不同)。

配置nginx.conf

# 需要自己寫,名字可隨意起,這里是testnginx,網(wǎng)上下載的nginx不會(huì)自帶,需要自己寫,里面是要進(jìn)行轉(zhuǎn)向管理的服務(wù)器
upstream testnginx{
   server 127.0.0.1:8081;
   server 127.0.0.1:8082;
} 
server {
	# nginx的端口設(shè)置
	listen       8080;
	# nginx的IP設(shè)置
	server_name  127.0.0.1;	
	#charset koi8-r;
	#access_log  logs/host.access.log  main;
	location / {
		# nginx要訪問的upstream,http://后面要與上面定義的upstream的名字保持一致
		proxy_pass   http://testnginx;
		root   html;
		# 首頁
		index  index.html index.htm;
	}
}

在jar包目錄下通過cmd窗口使用java -jar jar包名命令啟動(dòng)jar包中的項(xiàng)目,然后再啟動(dòng)nginx。就可以去訪問nginx了,nginx會(huì)自動(dòng)將請(qǐng)求隨機(jī)轉(zhuǎn)發(fā)給設(shè)置的服務(wù)器地址。

瀏覽器訪問nginx的地址+端口,指定要訪問的項(xiàng)目中的接口。

域名映射

  1. 找到電腦C:\Windows\System32\drivers\etc下hosts文件并打開
  2. 127.0.0.1 www.lp.com(可任意) 將www.lp.com映射到127.0.0.1上
  3. 在nginx中配置server中server_name為www.lp.com

session共享解決方案

ip_hash

nginx中的ip_hash技術(shù)能夠?qū)⒛硞€(gè)ip的請(qǐng)求固定到同一臺(tái)后端應(yīng)用服務(wù)器,這樣一來這個(gè)ip下的某個(gè)客戶端和某個(gè)后端就能建立起穩(wěn)固的session,ip_hash是在upstream配置中定義的:

upstream servertest {
	server 192.168.1.146:8080 down;
	server 192.168.1.146:8081 weight=3;
	server 192.168.1.146:8082;
	server 192.168.1.146:8083 backup;
	ip_hash;
}

優(yōu)點(diǎn):ip_hash算法可以把一個(gè)ip映射到一臺(tái)服務(wù)器上,這樣可以解決session同步的問題。這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器,可以解決session的問題;

缺點(diǎn):使用ip_hash進(jìn)行session共享,它的原理是為每個(gè)訪問者提供一個(gè)固定的訪問ip,讓用戶只能在當(dāng)前訪問的服務(wù)器上進(jìn)行操作,保持了session同步的,但是也造成了負(fù)載不均衡的問題,如果當(dāng)前用戶訪問的服務(wù)器掛了的話,那就會(huì)出現(xiàn)問題了;

springsession

這種方式用戶通過Nginx訪問了其中一臺(tái)服務(wù)器,存了一個(gè)session,這個(gè)session會(huì)同步到其它服務(wù)器。

導(dǎo)入jar

<dependency>
	<groupId>org.springframework.session</groupId>
	<artifactId>spring-session-data-redis</artifactId>
	<version>2.0.4.RELEASE</version>
</dependency>

編寫(只需開啟,不用配置)

@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig {
}

分布式事務(wù)

一旦把項(xiàng)目部署在多臺(tái)服務(wù)器上,就會(huì)產(chǎn)生事務(wù)問題、多線程問題、操作統(tǒng)一資源產(chǎn)生的問題

到此這篇關(guān)于Nginx分布式部署的文章就介紹到這了,更多相關(guān)nginx分布式部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx下實(shí)現(xiàn)pathinfo及ThinkPHP的URL模式

    Nginx下實(shí)現(xiàn)pathinfo及ThinkPHP的URL模式

    本篇文章主要介紹了Nginx下實(shí)現(xiàn)pathinfo及ThinkPHP的URL模式。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • 使用nginx模擬進(jìn)行藍(lán)綠部署的方式

    使用nginx模擬進(jìn)行藍(lán)綠部署的方式

    今天小編就為大家分享一篇關(guān)于使用nginx模擬進(jìn)行藍(lán)綠部署的方式,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Nginx?簡(jiǎn)介、安裝與配置文件詳解

    Nginx?簡(jiǎn)介、安裝與配置文件詳解

    Nginx是一款輕量級(jí)和高性能的?Web?服務(wù)器、反向代理服務(wù)器、電子郵件(IMAP/POP3/SMTP)代理服務(wù)器,是帶有?BSD-like?協(xié)議的開源產(chǎn)品,這篇文章主要介紹了Nginx?簡(jiǎn)介、安裝與配置文件詳解,需要的朋友可以參考下
    2024-04-04
  • 一文弄懂Nginx熱升級(jí)

    一文弄懂Nginx熱升級(jí)

    Nginx熱升級(jí)指服務(wù)不中斷情況下用新的Nginx二進(jìn)制文件替換老的Nginx二進(jìn)制文件,本文就來介紹一下Nginx熱升級(jí),感興趣的可以了解一下
    2024-05-05
  • 實(shí)例詳解SpringBoot+nginx實(shí)現(xiàn)資源上傳功能

    實(shí)例詳解SpringBoot+nginx實(shí)現(xiàn)資源上傳功能

    這篇文章主要介紹了SpringBoot+nginx實(shí)現(xiàn)資源上傳功能,由于小編最近在使用nginx放置靜態(tài)資源問題,遇到很多干貨,特此分享到腳本之家平臺(tái),供大家參考,需要的朋友可以參考下
    2019-10-10
  • angular6+springboot實(shí)現(xiàn)前后分離nginx配置

    angular6+springboot實(shí)現(xiàn)前后分離nginx配置

    這篇文章主要介紹了angular6+springboot實(shí)現(xiàn)前后分離nginx配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • nginx基于域名,端口,不同IP的虛擬主機(jī)設(shè)置的實(shí)現(xiàn)

    nginx基于域名,端口,不同IP的虛擬主機(jī)設(shè)置的實(shí)現(xiàn)

    這篇文章主要介紹了nginx基于域名,端口,不同IP的虛擬主機(jī)設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 詳解Nginx SSL快速雙向認(rèn)證配置(腳本)

    詳解Nginx SSL快速雙向認(rèn)證配置(腳本)

    這篇文章主要介紹了詳解Nginx SSL快速雙向認(rèn)證配置(腳本),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • nginx expires控制頁面緩存

    nginx expires控制頁面緩存

    expires 指令可以控制 HTTP 應(yīng)答中的“Expires ”和“ Cache-Control ”的頭標(biāo)(起到控制頁面緩存的作用)
    2013-01-01
  • Nginx隱藏server頭信息的實(shí)現(xiàn)

    Nginx隱藏server頭信息的實(shí)現(xiàn)

    本文主要介紹了Nginx隱藏server頭信息的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評(píng)論

常宁市| 丰宁| 岳阳县| 泰兴市| 陇南市| 蓝山县| 库车县| 莎车县| 泾川县| 永济市| 太原市| 保亭| 柏乡县| 武清区| 弋阳县| 遂溪县| 渑池县| 龙川县| 厦门市| 仙桃市| 全南县| 海安县| 阿荣旗| 富蕴县| 泾阳县| 兴宁市| 九台市| 陇西县| 宁阳县| 峡江县| 阿巴嘎旗| 鸡泽县| 江陵县| 行唐县| 金堂县| 广饶县| 宝山区| 永清县| 江达县| 桃园县| 花垣县|