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

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

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

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

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

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

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

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

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

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

具體來說就是:

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

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

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

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

實(shí)現(xiàn)步驟

一、配置nginx

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

        location ~* \.html$ {#只設(shè)置*.html為內(nèi)部訪問
            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");
    }
}

四、運(yùn)行結(jié)果

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

通過后端地址可以

但后端必須登錄才行

完美。

說下總結(jié)

這功能在nginx下才能使用。

其他web服務(wù)器有沒有類似機(jī)制不得而知。

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

@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);
        }
    }
}

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

1)vue運(yùn)行時的請求request結(jié)構(gòu)

2)nginx的request

補(bǔ)充:

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

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

相關(guān)文章

  • Nginx配置文件nginx.conf的常用配置方法

    Nginx配置文件nginx.conf的常用配置方法

    這篇文章主要介紹了Nginx配置文件nginx.conf的常用配置方法,作為剛開始著手搭建Nginx服務(wù)器的一個指南,需要的朋友可以參考下
    2015-07-07
  • Nginx流量同時轉(zhuǎn)發(fā)多后端(流量鏡像分發(fā))

    Nginx流量同時轉(zhuǎn)發(fā)多后端(流量鏡像分發(fā))

    在需要同時將請求轉(zhuǎn)發(fā)至多個后端服務(wù)的場景中,Nginx的mirror模塊提供了流量鏡像分發(fā)的功能,本文就來介紹一下Nginx流量同時轉(zhuǎn)發(fā)多后端(流量鏡像分發(fā)),感興趣的可以了解一下
    2024-10-10
  • Nginx配置圖片服務(wù)器(極簡配置)

    Nginx配置圖片服務(wù)器(極簡配置)

    本文主要介紹了主要是Nginx做靜態(tài)圖片服務(wù)器的詳情配置說明,還包括做反向代理、動靜分離、負(fù)載均衡的極簡配置,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Nginx?部署及配置詳細(xì)步驟(附詳細(xì)代碼)

    Nginx?部署及配置詳細(xì)步驟(附詳細(xì)代碼)

    Nginx是一個web服務(wù)器也可以用來做負(fù)載均衡及反向代理使用,目前使用最多的就是負(fù)載均衡,這篇文章主要介紹了Nginx部署及配置的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-11-11
  • nginx部署vue前端打包項(xiàng)目方式

    nginx部署vue前端打包項(xiàng)目方式

    本文指導(dǎo)Vue項(xiàng)目部署至Nginx,包括打包成dist.zip、上傳解壓到nginx/html目錄、修改配置文件server塊及base路徑,替換后端IP后啟動Nginx,通過指定IP:8083訪問前端頁面
    2025-07-07
  • Nginx日志定期清理設(shè)置實(shí)現(xiàn)

    Nginx日志定期清理設(shè)置實(shí)現(xiàn)

    本文主要介紹了Nginx日志定期清理設(shè)置實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-12-12
  • nginx配置代理多個前端資源

    nginx配置代理多個前端資源

    本文主要介紹了nginx配置代理多個前端資源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Nginx 上傳大文件超時解決辦法

    Nginx 上傳大文件超時解決辦法

    這篇文章主要介紹了Nginx 上傳大文件超時解決辦法的相關(guān)資料,這里上傳文件并設(shè)置nginx的配置文件防止超時的情況,需要的朋友可以參考下
    2017-07-07
  • Nginx啟用gzip壓縮的方法示例

    Nginx啟用gzip壓縮的方法示例

    這篇文章主要介紹了Nginx啟用gzip壓縮的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Centos7.3 安裝部署Nginx并配置https的方法步驟

    Centos7.3 安裝部署Nginx并配置https的方法步驟

    這篇文章主要介紹了Centos7.3 安裝部署Nginx并配置https的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論

塘沽区| 彩票| 长葛市| 广平县| 嵊泗县| 钟山县| 通渭县| 浑源县| 中西区| 洛川县| 江孜县| 竹溪县| 怀远县| 河津市| 房山区| 麦盖提县| 武乡县| 海伦市| 安平县| 榆中县| 揭西县| 玉环县| 屏东县| 红安县| 闻喜县| 鄄城县| 伊宁市| 会昌县| 青海省| 淮安市| 隆昌县| 昌图县| 鄢陵县| 蓝田县| 五寨县| 宣恩县| 兰州市| 广宗县| 白山市| 广丰县| 渝中区|