欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx內部訪問特性如何實現(xiàn)靜態(tài)資源授權訪問

 更新時間:2024年06月19日 15:24:59   作者:左直拳  
這篇文章主要介紹了nginx內部訪問特性如何實現(xiàn)靜態(tài)資源授權訪問方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

nginx內部訪問特性實現(xiàn)靜態(tài)資源授權訪問

在nginx中,將靜態(tài)資源設為internal;然后將前端的靜態(tài)資源地址改為指向后端,在后端的響應頭部中寫上靜態(tài)資源地址。

近期客戶對我們項目做安全性測評,暴露出一些安全性問題,其中一個是有些靜態(tài)頁面(*.html)無須授權即可直接訪問,里面的信息一覽無遺,不安全。

這些靜態(tài)頁面都是arcgis地圖頁面,依賴arcgis for js,沒有辦法做成一般意義上的動態(tài)頁面?;蛘哒f,該項目是個老項目,目前只處于維護階段,大規(guī)模改頭換面不現(xiàn)實。

怎么辦,有沒有什么方法,不改這些靜態(tài)頁面,或者是不做大的調整,就能實現(xiàn)只有登錄后才能訪問它們呢?

看到網(wǎng)上有文章介紹,可以利用nginx的internal特性,將靜態(tài)資源設為內部訪問,即可實現(xiàn)需要鑒權才能訪問。

原理說起來也比較簡單。所謂內部訪問,是指你直接在瀏覽器輸入靜態(tài)資源地址,將無法訪問,會直接報404,只有通過后端向nginx發(fā)送特定信息才可以。而后端,我們是要登錄系統(tǒng)以后才能請求的,所以就能實現(xiàn)我們想要的效果了。

具體來說就是:

假設我們前端部署在nginx,原本我們要訪問某個靜態(tài)頁面:/A.html,現(xiàn)在不行了,要將地址改為 /api/static/getA,改而向后端請求;后端收到請求后,在響應信息頭里加上一句:

response.setHeader("X-Accel-Redirect", "/A.html");

返回;nginx接收到響應信息后,于是將/A.html最終返回。

現(xiàn)在來真的,我們要實現(xiàn)/projects/dzzhyj/index.html的鑒權訪問。

實現(xiàn)步驟

一、配置nginx

server {
    listen      8001;
    server_name 192.168.0.218;
    
        。。。
    
    location /projects/dzzhyj/ {
        alias /home/gzdd_html/gzdd/projects/dzzhyj/;#物理路徑

        location ~* \.html$ {#只設置*.html為內部訪問
            internal;
        }
    }      
}

二、修改前端代碼

<template>
  <div class="-map-container">
<!--    <iframe src="/projects/dzzhyj/index.html" ></iframe> -->
    <iframe src="/api/dzzhyj/redirect/dzzhyj" ></iframe>
  </div>
</template>

三、增加后端代碼

@Controller
@RequestMapping("redirect")
public class RedirectController {
    @GetMapping("/dzzhyj")
    public void handleDzzhyj(HttpServletRequest request, HttpServletResponse response) throws Exception {
            response.setHeader("X-Accel-Redirect", "/projects/dzzhyj/index.html");
    }
}

四、運行結果

直接訪問靜態(tài)頁面,不行

通過后端地址可以

但后端必須登錄才行

完美。

說下總結

這功能在nginx下才能使用。

其他web服務器有沒有類似機制不得而知。

但我們平時開發(fā),用vue,都直接用npm來跑,所以后端代碼做點更改,判斷是nginx發(fā)出的請求,才做上述處理,否則跳轉:

@Controller
@RequestMapping("redirect")
public class RedirectController {
    @GetMapping("/dzzhyj")
    public void handleDzzhyj(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String xForwardedForHeader = request.getHeader("X-Real-IP");
        if (xForwardedForHeader != null && !xForwardedForHeader.isEmpty()) {
            // 請求經(jīng)過了 Nginx
            response.setHeader("X-Accel-Redirect", "/projects/dzzhyj/index.html");
        } else {
            // 請求未經(jīng)過 Nginx
            String[] hosts = request.getHeader("X-Forwarded-Host").split(",");
            String url = String.format("http://%s/projects/dzzhyj/index.html",hosts[0]);
            response.sendRedirect(url);
        }
    }
}

其實沒有方法能直接判斷請求是否來自nginx,我是比較了從node發(fā)出的請求和從nginx發(fā)出的請求所包含的鍵值,看其中有沒有包含“X-Real-IP”,簡單地做了一下判斷,不一定對。

1)vue運行時的請求request結構

2)nginx的request

補充:

  • 我發(fā)現(xiàn),也許是兜兜轉轉的緣故,瀏覽器對這種訪問可能有一些處理。
  • 當?shù)谝淮我驗橄到y(tǒng)初始化未完成,或其他什么原因,加載失敗的話,后面就會一直失敗。
  • 這時候將瀏覽器關掉,重新打開再訪問,或者換一種瀏覽器,就可以成功。
  • 否則一直試,一直試,永遠都找不到原因。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Nginx地址重定向的實現(xiàn)

    Nginx地址重定向的實現(xiàn)

    重定向 是將一個域名或地址指向另一個的方法,本文主要介紹了Nginx地址重定向的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Nginx 根據(jù)URL帶的參數(shù)轉發(fā)的實現(xiàn)

    Nginx 根據(jù)URL帶的參數(shù)轉發(fā)的實現(xiàn)

    這篇文章主要介紹了Nginx 根據(jù)URL帶的參數(shù)轉發(fā)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Nginx的nginx.conf配置文件中文注釋說明

    Nginx的nginx.conf配置文件中文注釋說明

    這篇文章主要介紹了Nginx的nginx.conf配置文件中文注釋說明,本文是個人注釋版,在生產環(huán)境中經(jīng)常使用,需要的朋友可以參考下
    2014-12-12
  • Nginx配置后請求報404的幾種問題解決方法

    Nginx配置后請求報404的幾種問題解決方法

    本文主要介紹了Nginx配置后請求報404的兩種常見問題及其解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • nginx+php出現(xiàn)No input file specified解決辦法

    nginx+php出現(xiàn)No input file specified解決辦法

    這篇文章主要介紹了nginx+php出現(xiàn)No input file specified解決辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • nginx反向代理失效前端無法獲取后端的數(shù)據(jù)解決辦法

    nginx反向代理失效前端無法獲取后端的數(shù)據(jù)解決辦法

    Nginx服務器的反向代理服務是其最常用的重要功能,由反向代理服務也可以衍生出很多與此相關的Nginx服務器重要功能,下面這篇文章主要給大家介紹了關于nginx反向代理失效前端無法獲取后端的數(shù)據(jù)解決的相關資料,需要的朋友可以參考下
    2023-12-12
  • Nginx服務器中414錯誤和504錯誤的配置解決方法

    Nginx服務器中414錯誤和504錯誤的配置解決方法

    這篇文章主要介紹了Nginx服務器中414錯誤和504錯誤的配置解決方法,分別對應Request-URI Too Large和Gateway Time-out這樣的錯誤提示,需要的朋友可以參考下
    2015-12-12
  • nginx如何開啟Gzip壓縮

    nginx如何開啟Gzip壓縮

    啟用Gzip壓縮能顯著減小網(wǎng)頁資源如css、js的體積,提升加載速度,配置方法簡單,在nginx的http塊中添加規(guī)則后重啟即可,注意,不適用于圖片和大文件壓縮
    2024-11-11
  • nginx反向代理服務器及負載均衡服務配置方法

    nginx反向代理服務器及負載均衡服務配置方法

    正向代理一般是在客戶端設置代理服務器,通過代理服務器轉發(fā)請求,最終訪問到目標服務器,這篇文章主要介紹了nginx反向代理服務器及負載均衡服務配置方法,需要的朋友可以參考下
    2023-12-12
  • nginx 平滑重啟與升級的實現(xiàn)方法

    nginx 平滑重啟與升級的實現(xiàn)方法

    有時候我們需要平滑重啟nginx服務,防止出現(xiàn)問題,這里簡單的總結,方便需要的朋友
    2013-02-02

最新評論