SpringBoot關(guān)閉druid的頁面和添加密碼驗證方式
SpringBoot關(guān)閉druid的頁面和添加密碼驗證
在生產(chǎn)環(huán)境中,需要關(guān)閉druid的頁面,以免被攻擊。
application.properties配置文件中添加參數(shù)
# Druid 數(shù)據(jù)源監(jiān)控配置 # 是否啟用StatViewServlet(監(jiān)控頁面)false為不啟動 spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* # IP白名單(沒有配置或者為空,則允許所有訪問) spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,192.168.0.1 # IP黑名單 (存在共同時,deny優(yōu)先于allow) spring.datasource.druid.stat-view-servlet.deny=192.168.0.0 # 禁用HTML頁面上的“Reset All”功能 spring.datasource.druid.stat-view-servlet.reset-enable=false # 登錄名 spring.datasource.druid.stat-view-servlet.login-username=admin # 登錄密碼 spring.datasource.druid.stat-view-servlet.login-password=admin
SpringBoot集成druid監(jiān)控
1.引入pom依賴
<!-- druid數(shù)據(jù)庫連接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.8</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>
2.配置文件配置監(jiān)控的屬性
注意:如果不想要登錄頁面,配置文件中可注釋掉用戶名和密碼
########## 配置StatViewServlet(監(jiān)控頁面),用于展示Druid的統(tǒng)計信息 ########## # 啟用StatViewServlet spring.datasource.druid.stat-view-servlet.enabled=true # 訪問內(nèi)置監(jiān)控頁面的路徑,內(nèi)置監(jiān)控頁面的首頁是/druid/index.html spring.datasource.druid.stat-view-servlet.url-pattern=/druid\/* # 不允許清空統(tǒng)計數(shù)據(jù),重新計算 spring.datasource.druid.stat-view-servlet.reset-enable=false # 配置監(jiān)控頁面訪問用戶名 #spring.datasource.druid.stat-view-servlet.login-username=admin # 配置監(jiān)控頁面訪問密碼 #spring.datasource.druid.stat-view-servlet.login-password=admin # 允許訪問的地址,如果allow沒有配置或者為空,則允許所有訪問 #spring.datasource.druid.stat-view-servlet.allow=127.0.0.1 # 拒絕訪問的地址,deny優(yōu)先于allow,如果在deny列表中,就算在allow列表中,也會被拒絕 #spring.datasource.druid.stat-view-servlet.deny= ########## 配置WebStatFilter,用于采集web關(guān)聯(lián)監(jiān)控的數(shù)據(jù) ########## # 啟動 StatFilter spring.datasource.druid.web-stat-filter.enabled=true # 過濾所有url spring.datasource.druid.web-stat-filter.url-pattern=\/* # 排除一些不必要的url spring.datasource.druid.web-stat-filter.exclusions=/druid\/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico # 開啟session統(tǒng)計功能 spring.datasource.druid.web-stat-filter.session-stat-enable=true # session的最大個數(shù),默認1000 spring.datasource.druid.web-stat-filter.session-stat-max-count=1000 spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-active=20 # 配置獲取連接等待超時的時間 spring.datasource.druid.max-wait=60000 # 配置間隔多久才進行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒 spring.datasource.druid.time-between-eviction-runs-millis=60000 # 配置一個連接在池中最小生存的時間,單位是毫秒 spring.datasource.druid.min-evictable-idle-time-millis=30000 spring.datasource.druid.validation-query=SELECT 1 FROM DUAL spring.datasource.druid.test-while-idle=true spring.datasource.druid.test-on-borrow=false spring.datasource.druid.test-on-return=false # 打開PSCache,并且指定每個連接上PSCache的大小 spring.datasource.druid.pool-prepared-statements=true spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20 spring.datasource.druid.filters=stat,wall # Spring 監(jiān)控,利用aop 對指定接口的執(zhí)行時間,jdbc數(shù)進行記錄 spring.datasource.druid.aop-patterns= com.admin.controller.*,com.front.controller.*
注意:每個/*
符號,走做了轉(zhuǎn)譯,復(fù)制過去的話需要取消轉(zhuǎn)譯符號
3. 運行后,訪問方法
(1)可單獨訪問整個鏈接
(2) 需要將頁面內(nèi)嵌在項目中:可在后臺寫一個方法,返回單獨訪問的路徑
- 后臺
@RestController @RequestMapping("/druid") public class DataSource { @Value("${druid.index}") private String druidIndex; @GetMapping("/druid") public ResponseInfo druid(HttpServletRequest request) { // 127.0.0.1 String remoteAddr = RequestUtils.getRemoteAddr(request); // 訪問域名 192.168.1.105 String serverName = request.getServerName(); // 訪問端口號 int port = request.getServerPort(); String url = "http://" + serverName + ":" + port + druidIndex; return new ResponseInfo(url); } }
- 配置文件druid.index
druid.index=/druid/index.html
- 工具類
/** * 獲得真實IP地址。在使用了反向代理時,直接用HttpServletRequest.getRemoteAddr()無法獲取客戶真實的IP地址。 * * @param request * ServletRequest * @return */ public static String getRemoteAddr(ServletRequest request) { String addr = null; if (request instanceof HttpServletRequest) { HttpServletRequest hsr = (HttpServletRequest) request; for (String header : ADDR_HEADER) { if (StringUtils.isBlank(addr) || NUKNOWN.equalsIgnoreCase(addr)) { addr = hsr.getHeader(header); } else { break; } } } if (StringUtils.isBlank(addr) || NUKNOWN.equalsIgnoreCase(addr)) { addr = request.getRemoteAddr(); } else { // 對于通過多個代理的情況,第一個IP為客戶端真實IP,多個IP按','分割 if (addr != null) { int i = addr.indexOf(","); if (i > 0) { addr = addr.substring(0, i); } } } return addr; }
- 前端
<template> <iframe :src="this.txtUrl" frameborder="0" width="100%" :style="{height:calHeight}" scrolling="auto"></iframe> </template> <script> export default { name: 'datasource', data () { return { txtUrl: '' } }, computed: { //計算屬性 , 設(shè)置iframe高度為窗口高度少100px calHeight() { return (window.innerHeight - 100) + 'px'; } }, methods: { fetchSysteminfo () { // 調(diào)用的后臺的druid方法 this.$request.fetchDatasource().then(res => { if (res.code === 200) { this.txtUrl = res.data } }).then(this.hideTableLoading).catch(this.hideTableLoading) } }, created () { this.fetchSysteminfo() } } </script>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用Curator進行ZooKeeper操作的詳細教程
Apache Curator 是一個基于 ZooKeeper 的 Java 客戶端庫,它極大地簡化了使用 ZooKeeper 的開發(fā)工作,在分布式系統(tǒng)中,ZooKeeper 通常被用來作為協(xié)調(diào)服務(wù),而 Curator 則為我們提供了更簡潔易用的接口,本文將介紹 Curator 的核心功能及實踐樣例,需要的朋友可以參考下2025-04-04解決maven項目tomcat啟動失敗war exploded:Error during
在SpringMVC項目中,使用war和warexploded兩種部署方式可能會導(dǎo)致不同的路徑問題,從而出現(xiàn)404錯誤,war模式將項目打包上傳,而warexploded模式則保持文件夾結(jié)構(gòu)上傳,開發(fā)時建議使用warexploded模式,方便利用Update classes and resources功能自動更新2024-10-10使用Java反射模擬實現(xiàn)Spring的IoC容器的操作
這篇文章主要介紹了使用Java反射模擬實現(xiàn)Spring的IoC容器的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Java并發(fā)之傳統(tǒng)線程同步通信技術(shù)代碼詳解
這篇文章主要介紹了Java并發(fā)之傳統(tǒng)線程同步通信技術(shù)代碼詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02JDBC連接SQL?Server數(shù)據(jù)庫實現(xiàn)增刪改查的全過程
實際開發(fā)中手動的輸入SQL語句是少之又少,大多數(shù)情況下是通過編譯代碼進行來控制自動執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于JDBC連接SQL?Server數(shù)據(jù)庫實現(xiàn)增刪改查的相關(guān)資料,需要的朋友可以參考下2023-04-04SpringBoot登錄驗證token攔截器的實現(xiàn)
本文主要介紹了SpringBoot登錄驗證token攔截器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07