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

nginx 負載均衡 多站點共享Session

 更新時間:2012年11月06日 17:26:53   作者:  
這里我們就 演練一下 以數(shù)據(jù)庫的形來存儲Session,來實現(xiàn)多站點共享Session
多站點共享Session常見的作法有:

•使用.net自動的狀態(tài)服務(Asp.net State Service);
•使用.net的Session數(shù)據(jù)庫;
•使用Memcached。
•使用Cookie方式實現(xiàn)多個站點間的共享(這種方式只限于幾個站點都在同一域名的情況下);
這里我們就 演練一下 以數(shù)據(jù)庫的形來存儲Session,來實現(xiàn)多站點共享Session。

首先我們 建好一下站點,如下圖:

 

Default.aspx 

其中 有二個Button  ,SetSession 主要是用于給一個 Session 賦值(如:Session["ShareValue"] = “abcd”) ,

GetSession 主要就是獲得 一個 Session 值。

具體代碼如下:

  

 代碼部分就這么多就行了…

下面就是要配置一下 Web.config了 , 其實主要就是在 <system.web>
這個節(jié)點中 增加 machineKey 及 sessionState 這兩個節(jié)點,
1.增加machineKey 主要作用是:
“按照MSDN的標準說法:“對密鑰進行配置,以便將其用于對 Forms 身份驗證 Cookie 數(shù)據(jù)和視圖狀態(tài)數(shù)據(jù)進行加密和解密,并將其用于對進程外會話狀態(tài)標識進行驗證?!币簿褪钦fAsp.Net的很多加密,都是依賴于machineKey里面的值,例如Forms 身份驗證 Cookie、ViewState的加密。默認情況下,Asp.Net的配置是自己動態(tài)生成,如果單臺服務器當然沒問題,但是如果多臺服務器負載均衡,machineKey還采用動態(tài)生成的方式,每臺服務器上的machinekey值不一致,就導致加密出來的結果也不一致,不能共享驗證和ViewState,所以對于多臺服務器負載均衡的情況,一定要在每臺站點配置相同的machineKey?!?,具體可以查一下其它資料。
2.增加 sessionState 主要是讓 Session 保存在數(shù)據(jù)庫中。
具體配置如下:

復制代碼 代碼如下:

<machineKey validationKey="86B6275BA31D3D713E41388692FCA68F7D20269411345AA1C17A7386DACC9C46E7CE5F97F556F3CF0A07159659E2706B77731779D2DA4B53BC47BFFD4FD48A54"
decryptionKey="9421E53E196BB56DB11B9C25197A2AD470638EFBC604AC74CD29DBBCF79D6046"
validation="SHA1" decryption="AES"/>
<sessionState mode="SQLServer" sqlConnectionString="Data Source=PC-07195;Initial Catalog=AWBUISession;Persist Security Info=True;User ID=jins;Password=js@#$1234" allowCustomSqlDatabase="true" cookieless="false" timeout="100"/>


網(wǎng)站部分 這樣就好了。。。 下面就是要配置據(jù)庫了…..

數(shù)據(jù)庫配置:
使用aspnet_regsql.exe工具
ASP.NET 2.0版本后微軟提供了aspnet_regsql.exe工具可以方便的配置Session數(shù)據(jù)庫.該工具位于 Web 服務器上的"系統(tǒng)根目錄\Microsoft.NET\Framework\版本號"文件夾中.

使用舉例:

aspnet_regsql.exe -S . -U sa -P 123456 -ssadd -sstype p
-S參數(shù):
表示數(shù)據(jù)庫實例名稱. 可以用"."表示本機.
-U和-P參數(shù):
表示用戶名和密碼.
-E參數(shù):
可以再-U –P 與 -E中選擇一組. –E表示以當前系統(tǒng)用戶通過windows身份驗證登錄數(shù)據(jù)庫, -U -P則是使用SqlServer用戶登錄數(shù)據(jù)庫.
-ssadd / –ssremove 參數(shù):
-ssadd表示是添加Session數(shù)據(jù)庫, -ssremove表示移除Session數(shù)據(jù)庫.
sstype 參數(shù)說明:
t
將會話數(shù)據(jù)存儲到 SQL Server tempdb 數(shù)據(jù)庫中。這是默認設置。如果將會話數(shù)據(jù)存儲到 tempdb 數(shù)據(jù)庫中,則在重新啟動 SQL Server 時將丟失會話數(shù)據(jù)。

將會話數(shù)據(jù)存儲到 ASPState 數(shù)據(jù)庫中,而不是存儲到 tempdb 數(shù)據(jù)庫中。
c
將會話數(shù)據(jù)存儲到自定義數(shù)據(jù)庫中。如果指定 c 選項,則還必須使用 -d 選項包括自定義數(shù)據(jù)庫的名稱。
我的設置是:aspnet_regsql.exe -S . - E -d AWBUISession -ssadd -sstype c

好了?;镜?我們就已經(jīng)搞定了。。
現(xiàn)在 我們分別把我們剛建的一個網(wǎng)站 部署 到 IIS 中。不過我們既然要負載。至少也的部署兩份。

 

我們把 其中一個 服務器中的 defaut.aspx 中 “服務器 1” 改成 “服務器 2” ,這樣做的主要目地是 做一下 區(qū)別! 

具體如下:

 

兩個網(wǎng)站的 URL分別是:

 server 1:127.0.0.1:8081;

server 2:127.0.0.1:8080;   

OK。下面我們就是 配置 Nignx了。

 

首先 在 nginx\conf 配置  文件中找到 nginx.conf 這個文件 ,就記事本打開, 

 

做如上的 設置:

OK。  nginx  這樣配置 就算OK 了。 我們啟動一下 nginx ..

在瀏覽器中 輸入我們 在 nginx 中配置的 URL 如:127.0.0.1:8090 

 

我們會看到 服務器 1 已經(jīng)開始為我們服務了,我們再點一下 “SetSession”來設置一下一個 會話值,

 

我們會看到 服務器 2 開始 工作。這時我們再點一下 “GetSesion”看一下 剛才在 服務器 1 設置 的會話值,結果如下 : 

 

出現(xiàn)這種情況 ,主要就是在數(shù)據(jù)庫中存儲 一個會話時 沒有做到 服務器1 和服務2的Session 共享,主要是 在 

ASPStateTempSessions 這個表中的 一個SessionID ,

其中的SessionId包括兩個部分:網(wǎng)站生成的24位SessionID及8位AppName對于不同的站點,其AppName不同,在能夠在不同站點下使24位SessionID相同的情況下,要保證經(jīng)過組合加上AppName后的SessionID相同,可以通過修改存儲過程TempGetAppID,使其得到的SessionID與AppName無關,修改TempGetAppID如下:

復制代碼 代碼如下:

ALTER PROCEDURE [dbo].[TempGetAppID]
@appName tAppName,
@appId int OUTPUT
AS
SET @appName = 'Test' --LOWER(@appName) 修改這里,使多個站點的APPname ,為一個固定值。
SET @appId = NULL
SELECT @appId = AppId
FROM [AWBUISession].dbo.ASPStateTempApplications
WHERE AppName = @appName
IF @appId IS NULL BEGIN
BEGIN TRAN
SELECT @appId = AppId
FROM [AWBUISession].dbo.ASPStateTempApplications WITH (TABLOCKX)
WHERE AppName = @appName
IF @appId IS NULL
BEGIN
EXEC GetHashCode @appName, @appId OUTPUT
INSERT [AWBUISession].dbo.ASPStateTempApplications
VALUES
(@appId, @appName)
IF @@ERROR = 2627
BEGIN
DECLARE @dupApp tAppName
SELECT @dupApp = RTRIM(AppName)
FROM [AWBUISession].dbo.ASPStateTempApplications
WHERE AppId = @appId
RAISERROR('SQL session state fatal error: hash-code collision between applications ''%s'' and ''%s''. Please rename the 1st application to resolve the problem.',
18, 1, @appName, @dupApp)
END
END
COMMIT
END
RETURN 0

經(jīng)過以上修改之后,下面要實現(xiàn)多個站點共用同一個SessionID.

重啟一下各站點。再在瀏覽一下網(wǎng)站 

點 “SetSession”, 

 

再點:“GetSession” 

這樣 我們就看到 服務器2 給出了我們 剛才在 服務器 1 中設置 的會話值了。

 

我們 再點:“GetSession”, 

 

可以看到  服務器1 和服務器 2 返回的是相同的結果,達到了 “多站點共享Session”

 

 附加一點: Session 過期刪除,主要是 在 SQL server 代理中的  作業(yè)完成。

具體的可以,查一下其它相關資料.

相關文章

  • nginx?攔截指定ip訪問指定url的實現(xiàn)示例

    nginx?攔截指定ip訪問指定url的實現(xiàn)示例

    本文主要介紹了nginx?攔截指定ip訪問指定url的實現(xiàn)示例,使用$http_x_forwarded_for變量來獲取客戶端的真實IP地址,感興趣的可以了解一下
    2024-12-12
  • Nginx代理輸出縮放圖片的方法

    Nginx代理輸出縮放圖片的方法

    這篇文章主要為大家詳細介紹了Nginx代理輸出縮放圖片的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Nginx服務器搭建和基本配置詳解

    Nginx服務器搭建和基本配置詳解

    這篇文章主要介紹了Nginx服務器搭建和基本配置詳解,Nginx是事件驅動的高性能服務器,需要的朋友可以參考下
    2015-09-09
  • nginx: [warn]

    nginx: [warn] "log_format" directive used only on "http" lev

    這篇文章主要介紹了nginx: [warn] "log_format" directive used only on "http" level 解決方法,需要的朋友可以參考下
    2014-08-08
  • nginx部署前端post請求405?not?allowed問題解決

    nginx部署前端post請求405?not?allowed問題解決

    在配置前端項目的時候遇到了一個post請求405 not allowed,簡單記錄一下如何配置,這篇文章主要給大家介紹了關于nginx部署前端post請求405?not?allowed問題解決方法,需要的朋友可以參考下
    2023-09-09
  • Nginx代理axios請求以及注意事項詳解

    Nginx代理axios請求以及注意事項詳解

    這篇文章主要給大家介紹了關于Nginx代理axios請求以及注意事項的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • 詳解nginx反向代理配置及優(yōu)化

    詳解nginx反向代理配置及優(yōu)化

    本篇文章主要介紹了詳解nginx反向代理配置及優(yōu)化,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 實現(xiàn)Nginx中使用PHP-FPM時記錄PHP錯誤日志的配置方法

    實現(xiàn)Nginx中使用PHP-FPM時記錄PHP錯誤日志的配置方法

    最近在本地搭建的LNMP的開發(fā)環(huán)境。為了開發(fā)的時候不影響前端的正常開發(fā)就屏蔽的PHP里面php.ini中的一些錯誤提示。但是這樣一來,就影響到了后端開發(fā)的一些問題比如不能及時調試開發(fā)中的一些問題
    2014-05-05
  • nginx+ingress 413問題排查過程

    nginx+ingress 413問題排查過程

    處理413錯誤需調整Nginx的client_max_body_size及Ingress配置,合理設置body-size,若無效,檢查后端限制,注意過大可能影響安全
    2025-08-08
  • Nginx?Location映射規(guī)則總結歸納與最佳實踐

    Nginx?Location映射規(guī)則總結歸納與最佳實踐

    Nginx的location指令是配置請求路由的核心機制,其匹配規(guī)則直接影響請求的處理流程,下面給大家介紹Nginx?Location映射規(guī)則總結歸納,感興趣的朋友一起看看吧
    2025-06-06

最新評論

大宁县| 浑源县| 上林县| 柯坪县| 遵化市| 施秉县| 万宁市| 枣强县| 陵水| 利津县| 青岛市| 云安县| 大姚县| 舞阳县| 兴安县| 惠东县| 巴彦县| 龙里县| 永丰县| 绥中县| 新龙县| 阆中市| 宝山区| 吉木萨尔县| 绿春县| 获嘉县| 武义县| 大理市| 安图县| 汨罗市| 米脂县| 抚松县| 襄城县| 丹寨县| 木里| 多伦县| 河池市| 台东市| 内江市| 永靖县| 房产|