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

Nginx分布式部署流程分析

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

分布式部署

分布式部署也叫集群或機群(多臺電腦整合在一起,都運行相同的項目)。

Nginx

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

Java中的代理

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

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

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

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

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

正向代理

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

反向代理

反向代理就是把代理操作放在服務器。

反向代理,其實客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發(fā)送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數(shù)據(jù)后,在返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器IP地址。

百度百科的說法:反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發(fā)給內(nèi)部網(wǎng)絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現(xiàn)為一個反向代理服務器。簡單來說就是真實的服務器不能直接被外部網(wǎng)絡訪問,所以需要一臺代理服務器,而代理服務器能被外部網(wǎng)絡訪問的同時又跟真實服務器在同一個網(wǎng)絡環(huán)境,當然也可能是同一臺服務器,端口不同而已。

Nginx應用場景

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

對此,我們可以在一臺新的服務器上再部署這個前端vue項目,讓其中50萬用戶訪問第一臺服務器的vue項目,讓另外50萬用戶訪問第二胎服務器的vue項目,減輕服務器壓力。

但問題是怎么讓其中50萬用戶訪問第一臺服務器的vue項目,讓另外50萬的用戶訪問第二胎服務器的vue項目。這就需要用到Nginx了。

用戶只需訪問Nginx,Nginx會幫我們做一個轉向,轉到兩臺服務器的前端vue項目。至于如何均衡的轉到這兩臺服務器,這就需要涉及到下面的負載均衡。

負載均衡

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

Nginx安裝與啟動

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

負載均衡簡單設置

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

Java項目使用nginx流程

現(xiàn)在大多都是前端在用Nginx,其實我們Java后端也能用Nginx,使用方法跟前端一樣。
可參考文章:分布式開發(fā)中最后的項目打包,分別設置使用不同的端口(因為都是在自己電腦上運行測試)進行打包,比如一個使用81端口,一個使用82端口(項目代碼都一樣,只是使用的端口號不同)。

配置nginx.conf

# 需要自己寫,名字可隨意起,這里是testnginx,網(wǎng)上下載的nginx不會自帶,需要自己寫,里面是要進行轉向管理的服務器
upstream testnginx{
   server 127.0.0.1:8081;
   server 127.0.0.1:8082;
} 
server {
	# nginx的端口設置
	listen       8080;
	# nginx的IP設置
	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包名命令啟動jar包中的項目,然后再啟動nginx。就可以去訪問nginx了,nginx會自動將請求隨機轉發(fā)給設置的服務器地址。

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

域名映射

  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技術能夠將某個ip的請求固定到同一臺后端應用服務器,這樣一來這個ip下的某個客戶端和某個后端就能建立起穩(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)點:ip_hash算法可以把一個ip映射到一臺服務器上,這樣可以解決session同步的問題。這樣每個訪客固定訪問一個后端服務器,可以解決session的問題;

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

springsession

這種方式用戶通過Nginx訪問了其中一臺服務器,存了一個session,這個session會同步到其它服務器。

導入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 {
}

分布式事務

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

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

相關文章

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

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

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

    使用nginx模擬進行藍綠部署的方式

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

    Nginx?簡介、安裝與配置文件詳解

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

    一文弄懂Nginx熱升級

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

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

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

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

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

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

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

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

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

    nginx expires控制頁面緩存

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

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

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

最新評論

中牟县| 江口县| 平果县| 资源县| 建阳市| 剑阁县| 邵东县| 子洲县| 溧阳市| 崇文区| 陆良县| 马尔康县| 淳安县| 浙江省| 磐安县| 司法| 勐海县| 漯河市| 阿鲁科尔沁旗| 民丰县| 德钦县| 闽侯县| 桂东县| 出国| 修武县| 元谋县| 上思县| 蓝田县| 白城市| 阜阳市| 巴林左旗| 贵港市| 枣庄市| 宕昌县| 谢通门县| 故城县| 广西| 祁门县| 长治县| 修文县| 上虞市|