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

Nginx靜態(tài)資源或者路徑鑒權(quán)方式

 更新時間:2024年06月19日 10:55:06   作者:longxiaobai_WJ  
這篇文章主要介紹了Nginx靜態(tài)資源或者路徑鑒權(quán)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1. http_auth_request_module

# 版本說明 nginx 1.20.2, 默認自帶 http_auth_request_module
# 模塊查看驗證 nginx -V (nginx -V| grep 'http_auth_request_module')

2. 鑒權(quán)接口準備

本文后端接口是通過Egg.js來實現(xiàn)的

實現(xiàn)代碼取決于項目中使用何種后端語言

'use strict';

const Controller = require('egg').Controller;

class AuthController extends Controller {
  async index() {
    const { ctx } = this;
    ctx.body = 'hi, AuthController';
  }

  async login() {
    const { ctx, service } = this;
    const secrect = Date.now();
    const jwt_token = await service.actionToken.apply(secrect);

    ctx.helper.success();
    // ctx.app.jwt.verify(jwt_token, this.app.config.jwt.secret);

    ctx.body = {
      status: 200,
      secret: jwt_token,
    };
  }

  async authorize() {
    // 獲取 POST 傳遞的參數(shù)
    console.log(this.ctx.params);
    // 獲取 GET 傳遞的參數(shù)
    console.log(this.ctx.query);
    // 獲取通過 cookie 傳遞的參數(shù)
    const isAuthToken = this.ctx.cookies.get('authorize', {
      signed: false,
    });
    console.log('isAuthToken log', isAuthToken);
    // 該代碼為兼容 4-2 配置代碼
    console.log('x-original-uri', this.ctx.headers['x-original-uri']);

    if (isAuthToken) {
      this.ctx.body = {
        status: 200,
        secret: 'jwt_token',
      };
    } else {
      this.ctx.status = 403;
    }
  }
}

module.exports = AuthController;

3. 修改Nginx配置

server {
    listen 8080;
    server_name localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;
    location = / {
        root index;
        index index.html index.htm;
    }

    location /eggjs {
        if ($http_cookie) {
            set $code_cookie $http_cookie;
        }
        if ($arg_code) {
            set $code_cookie "authorize=$arg_code; Path=/";
        }
        # 指定auth_request
        auth_request /auth;
        proxy_pass http://127.0.0.1:3000/static/index.html;
    }

    # 驗證配置
    location /jwt {
        proxy_pass http://localhost:3000/authorize;
    }

    location /scripts {
        proxy_pass http://127.0.0.1:3000/static/scripts/;
    }

    location = /auth {
        internal;
        # $http_cookie
        proxy_set_header Cookie "$code_cookie";

        # 鑒權(quán)服務(wù)器的地址
        proxy_pass http://localhost:3000/authorize;

        # proxy_pass_request_body off;
        # proxy_set_header Content-Length "";
        # proxy_set_header X-Original-URI $query_string;
        # proxy_set_header X-Original-URI $request_uri;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

4. 配置說明

指定auth_request

auth_request /auth;

傳遞完整的原始請求URI

  • 由于身份驗證子請求將丟棄請求體,可以通過以下配置傳遞信息(本文未使用該方式,故皆已注釋);
# proxy_pass_request_body off;
# proxy_set_header Content-Length "";
# proxy_set_header X-Original-URI $query_string;
# proxy_set_header X-Original-URI $request_uri;

傳遞校驗信息

# URL: http://localhost:8080/eggjs?code=202304
# 設(shè)置變量 $code_cookie,以便后續(xù)使用,此處配置兼容 cookie 與 query 兩種寫法
if ($http_cookie) {
    set $code_cookie $http_cookie;
}
if ($arg_code) {
    # $arg_code 與 URL上的參數(shù)code相對應(yīng)
    # 即 secrect=202304 應(yīng)對應(yīng) $arg_secrect
    set $code_cookie "authorize=$arg_code; Path=/";
}

# 在此處使用變量 $code_cookie
proxy_set_header Cookie "$code_cookie";

Extra Config Notes

以下配置,本文尚未驗證;

location /eggjs {
    auth_request /auth;
    auth_request_set $auth_status $upstream_status;
    if ($auth_status = "403") {
        return 403;
    }
    proxy_pass http://127.0.0.1:3000/static/index.html;
}

總結(jié)

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

相關(guān)文章

  • 解決SSE流被Nginx緩存的問題

    解決SSE流被Nginx緩存的問題

    如果你的服務(wù)使用了nginx網(wǎng)關(guān),可能會出現(xiàn)nginx緩沖sse流的問題,導致的現(xiàn)象是,客戶端調(diào)用sse接口時,流數(shù)據(jù)并不是一條條出現(xiàn)的,而是一口氣出現(xiàn)的,本文將給大家介紹如何解決SSE流被Nginx緩存的問題,需要的朋友可以參考下
    2023-10-10
  • Nginx配置如何區(qū)分PC或手機訪問不同域名

    Nginx配置如何區(qū)分PC或手機訪問不同域名

    這篇文章主要介紹了Nginx配置如何區(qū)分PC或手機訪問不同域名,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • nginx支持.htaccess文件實現(xiàn)偽靜態(tài)的方法分享

    nginx支持.htaccess文件實現(xiàn)偽靜態(tài)的方法分享

    這篇文章主要介紹了nginx支持.htaccess文件實現(xiàn)偽靜態(tài)的方法分享,需要的朋友可以參考下
    2015-01-01
  • nginx配置多個前端項目實現(xiàn)步驟

    nginx配置多個前端項目實現(xiàn)步驟

    本文主要介紹了nginx配置多個前端項目實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • nginx中的兩個模塊的proxy_pass的區(qū)別解析

    nginx中的兩個模塊的proxy_pass的區(qū)別解析

    在nginx中配置proxy_pass代理轉(zhuǎn)發(fā)時,如果在proxy_pass后面的url加/,表示絕對根路徑;如果沒有/,表示相對路徑,把匹配的路徑部分也給代理走。本文給大家介紹nginx中的兩個模塊的proxy_pass的區(qū)別,感興趣的朋友一起看看吧
    2021-11-11
  • nginx配置多個虛擬主機vhost的方法示例

    nginx配置多個虛擬主機vhost的方法示例

    這篇文章主要介紹了nginx配置多個虛擬主機vhost的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • nginx服務(wù)器的下載安裝與使用詳解

    nginx服務(wù)器的下載安裝與使用詳解

    這篇文章主要介紹了nginx服務(wù)器的下載安裝與使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • nginx啟動、配置及測試圖文詳解(全網(wǎng)最全)

    nginx啟動、配置及測試圖文詳解(全網(wǎng)最全)

    nginx是一個輕量級的網(wǎng)頁服務(wù)器、方向代理服務(wù)器和電子郵件代理服務(wù)器,具有配置靈活、靜態(tài)資源高并發(fā)、系統(tǒng)資源占用少、擁有緩存服務(wù)等優(yōu)點,這篇文章主要給大家介紹了關(guān)于nginx啟動、配置及測試的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • Nginx 代理轉(zhuǎn)發(fā)阿里云OSS上傳的實現(xiàn)代碼

    Nginx 代理轉(zhuǎn)發(fā)阿里云OSS上傳的實現(xiàn)代碼

    這篇文章主要介紹了Nginx 代理轉(zhuǎn)發(fā)阿里云OSS上傳的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解

    Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解

    這篇文章主要介紹了Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解,文中使用到了Nginx中的proxy_pass配置項,需要的朋友可以參考下
    2016-04-04

最新評論