[發明專利]一種基于nginx服務器生成會話ID的方法有效
| 申請號: | 201810570009.4 | 申請日: | 2018-06-05 |
| 公開(公告)號: | CN108833518B | 公開(公告)日: | 2019-04-09 |
| 發明(設計)人: | 李斌;楊冰;徐曉瑀;王國升;張琦玉;陳劍;羅義斌;孫力斌 | 申請(專利權)人: | 南京聯創互聯網技術有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;H04L29/12 |
| 代理公司: | 南京眾聯專利代理有限公司 32206 | 代理人: | 葉涓涓 |
| 地址: | 210019 江蘇省*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 會話 服務器 集群 有效期 嵌入 系統吞吐量 后端應用 內部網絡 算法校驗 硬件消耗 非重復 客戶端 數據轉 校驗碼 校驗 偽造 | ||
本發明提供一種基于nginx服務器生成會話ID的方法,包括:集群內部生成非重復的序列;將會話ID放到多Redis集群上,將Redis節點的ID嵌入會話ID;將有效期嵌入會話ID中;將數據轉成base64格式;使用校驗碼與數值部分共同形成會話ID;收到客戶端傳過來的會話ID,通過算法校驗該ID是否在有效期內,是否偽造,是否有效。本發明在Nginx上實現了會話ID的生成與校驗功能,降低了系統內部網絡開銷,減少后端應用服務器的壓力,減少了硬件消耗,提高了系統吞吐量,實現了資源的合理利用。
技術領域
本發明涉及Web開發技術領域,涉及一種基于nginx服務器生成會話ID的方法。
背景技術
Nginx是一個高性能的HTTP服務器和反向代理服務器。被淘寶、網易、新浪等大量互聯網公司使用。
現在在開發中有需求,系統需要提供會話ID,用于追蹤用戶,從而方便分析用戶行為、做A/B測試。在通常的分布式解決方案中,生成和校驗會話ID由后端應用服務器負責。Nginx通過接口調用后端應用服務器完成會話ID生成、校驗。該方案調用環節比較多,系統內部網絡開銷大,需要的硬件資源多。
發明內容
為解決上述問題,本發明公開了基于Nginx服務器生成會話ID的方法,以nginx相應插件的形式,能夠快速生成不容易被偽造的會話ID。
為了達到上述目的,本發明提供如下技術方案:
一種基于nginx服務器生成會話ID的方法,包括如下步驟:
步驟一,集群內部生成非重復序列,序列包括:nginx實例ID、時間戳、計數器,nginx實例ID具有唯一性;
步驟二,對步驟一生成的序列使用CRC32算法進行運算,得到一個整數結果,該結果與Redis的節點個數做模運算,得到的結果作為Redis節點ID;
步驟三,將有效期寫入會話ID;
步驟四,拼接序列、Redis節點ID、有效期,并使用Base64算法進行運算即得到會話ID的數值部分;
步驟五,拼接會話ID的數值部分、客戶端的User-Agent、客戶端IP、服務器端密碼,然后按照字符升序排序,最后使用MD5算法進行運算,運算結果即為校驗碼;
步驟六,拼接步驟四生成的會話ID數值部分和步驟五生成的驗證碼,得到最終的會話ID。
作為改進,還包括會話ID校驗方法,包括如下過程:
收到客戶端的請求時,截取會話ID末尾的128Bit校驗碼,則其余部分為會話ID的數值部分;對會話ID的數值部分使用Base64算法解碼,對解碼后的數據進行如下操作:
校驗會話ID是否過期:
取第1位至第40位,計算出生效時間;
取出第69位至76位,計算出有效期;
如果生效時間+有效期<當前時間,則會話過期;
校驗會話ID是否被偽造篡改:
將會話ID的數值部分跟客戶端IP、客戶端User-Agent拼接,計算MD5碼,并將結果與會話ID中的校驗碼比對,判斷是否相同;如果相同,表示會話ID正確;如果不相同,則表示會話ID是偽造的,或被篡改,拋出錯誤;
校驗會話ID有效性:
截取第65至68位,獲得Redis節點ID,根據Redis節點ID,從對應的Redis存儲節點查詢該會話ID,如果查詢到數據,說明會話ID有效,否則說明該會話ID無效。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京聯創互聯網技術有限公司,未經南京聯創互聯網技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810570009.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:數據處理系統、方法、電子設備及存儲介質
- 下一篇:一種存儲集群方法及系統





