云計算學習100天-第26天

地址重寫

地址重寫語法——


關于Nginx服務器的地址重寫,主要用到的配置參數是rewrite
語法格式:
rewrite regex replacement flag
rewrite 舊地址?? 新地址??? [選項]

地址重寫步驟:


#修改配置文件(訪問a.html重定向到b.html)
cd /usr/local/nginx/
cp conf/nginx.conf.default conf/nginx.conf? #還原配置文件
cp: overwrite 'conf/nginx.conf'? y
[root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen?????? 80;
server_name? localhost;
rewrite? /a.html? /b.html;?????? #新添加地址重寫,a.html重定向到b.html ?
...
location / {
root?? html;
index? index.html index.htm;
}
}

echo "nginx-B~~" > /usr/local/nginx/html/b.html
#重新加載配置文件
/usr/local/nginx/sbin/nginx? -s? reload

#客戶端測試
http://192.168.88.5/a.html????????? #內容顯示的是nginx-B~~,但是地址欄沒有發生變化,還是a.html頁面

此時配置文件中直接寫rewrite? /a.html? /b.html; 配置,在測試是其實會有些問題,比如在瀏覽器中訪問時把192.168.88.5/a.html寫成192.168.88.5/a.htmldc 或者寫成 192.168.88.5/dc/a.html,訪問都會正常顯示b.html的頁面,這是因為此時寫的是只要包含a.html的都會跳轉,沒有進行精準匹配,可以進行以下修改,只有寫a.html時才會正確跳轉
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {

??????? listen?????? 80;
server_name? localhost;
rewrite? ^/a\.html$? /b.html;?????? #新添加地址重寫,a.html重定向到b.html ?
...

/usr/local/nginx/sbin/nginx? -s? reload

瀏覽器重新訪問測試即可192.168.88.5/a.html,顯示b.html頁面內容

測試重定向——


#redirect? 臨時重定向,狀態碼302
#permanent 永久重定向,狀態碼301

#修改Nginx服務配置
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {

??????? listen?????? 80;
server_name? localhost;
rewrite ^/a\.html$? /b.html? redirect;????? #新修改,redirect重定向,測試完之后把redirect換成permanent,是一樣的效果
...
location / {
root?? html;
index? index.html index.htm;
}
}

#重新加載配置文件
/usr/local/nginx/sbin/nginx? -s? reload

瀏覽器測試,地址欄同時發生變化
http://192.168.88.5/a.html? #內容顯示的是nginx-B~~,地址欄發生變化,是b.html頁面

不同網站間跳轉——
#修改Nginx服務配置實現訪問192.168.88.5的請求重定向至www.tmooc.cn
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen?????? 80;
server_name? localhost;
rewrite /? http://www.tmooc.cn/;??????? #新修改,訪問舊網站的任意內容都跳轉到新網站
location / {
root?? html;
index? index.html index.htm;
}
}

#重新加載配置文件
/usr/local/nginx/sbin/nginx? -s? reload
#客戶端測試
http://192.168.88.5???? #可以成功跳轉

子頁面重定向——


#修改配置文件(訪問192.168.88.5/下面子頁面,重定向至www.tmooc.cn/下相同的子頁面)
vim /usr/local/nginx/conf/nginx.conf
...
server {
listen?????? 80;
server_name? localhost;
rewrite? /(.*)? http://www.tmooc.cn/$1;???? #新修改
location / {
root?? html;
index? index.html index.htm;
}
}
#重新加載配置文件
/usr/local/nginx/sbin/nginx? -s? reload
#客戶端測試
http://192.168.88.5/b.html????? #成功跳轉

實現不同瀏覽器跳轉到不同頁面——


#創建網頁目錄以及對應的頁面文件:
mkdir? html/firefox
echo? firefox~~? >? html/firefox/abc.html?? #火狐專用頁面
cho? others~~? >? html/abc.html??????????? #其他瀏覽器專用頁面

火狐訪問192.168.88.5/abc.html時可以看到html/firefox/abc.html里面內容
其他瀏覽器訪問192.168.88.5/abc.html時可以看到html/abc.html里面內容

#修改Nginx服務配置
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen?????? 80;
server_name? localhost;
if ($http_user_agent ~* firefox) {? #如果用戶使用了火狐瀏覽器就進行地址重寫,讓用戶看到火狐專用頁面,否則就是其他頁面
rewrite /(.*)? /firefox/$1;???? #$http_user_agent是nginx的內置變量,包含了發起 HTTP 請求的客戶端的用戶代理(User-Agent)字符串,比如用的什么瀏覽器
}
location / {
root?? html;
index? index.html index.htm;
}

#重新加載配置文件
/usr/local/nginx/sbin/nginx? -s? reload
#客戶端測試
用火狐瀏覽器與其他瀏覽器訪問相同地址192.168.88.5/abc.html,可以得到不同結果
火狐瀏覽器訪問192.168.88.5/abc.html,得到結果firefox~~
其他瀏覽器訪問192.168.88.5/abc.html,得到結果others~~

其他選項測試——


#last 不再讀其他語句,但還會繼續匹配其他location語句
#break 不再讀其他語句,結束請求

測試last不再讀其他語句


#修改Nginx服務配置
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen?????? 80;
server_name? localhost;
rewrite /a.html /b.html;??????? #新修改
rewrite /b.html /c.html;??????? #新修改
...
}
...
#重新加載配置文件
/usr/local/nginx/sbin/nginx? -s? reload
echo nginx-c~~ > html/c.html
#瀏覽器測試
192.168.88.5/a.html #內容顯示的是nginx-c~~
#如果想要訪問的是b.html的內容,可以做以下更改
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen?????? 80;
server_name? localhost;
rewrite /a.html /b.html last;?????? #新修改
rewrite /b.html /c.html;
...
}
...
#重新加載配置文件
/usr/local/nginx/sbin/nginx? -s? reload
#瀏覽器測試訪問
192.168.88.5/a.html #內容顯示的是nginx-b~~

測試last會繼續匹配其他location語句


vim /usr/local/nginx/conf/nginx.conf
...
location / {??????????????? #此處為默認的location
rewrite /a.html /b.html last;?? #新添加
root?? html;
index? index.html index.htm;
}
location /b.html {??????????????? #這里是新添加的location
rewrite /b.html /c.html;
}
...?????? ?
#重新加載配置文件
/usr/local/nginx/sbin/nginx? -s? reload
#客戶端測試: http://192.168.88.5/a.html,顯示為nginx-c~~

break 不再讀其他語句,結束請求

vim /usr/local/nginx/conf/nginx.conf
...
location / {
rewrite /a.html /b.html break;??????? #break可以阻止后面的語句
root?? html;
index? index.html index.htm;
}
location /b.html {
rewrite /b.html /c.html;
}
...?????? ?
#重新加載配置文件
/usr/local/nginx/sbin/nginx? -s? reload
#客戶端測試: http://192.168.88.5/a.html,顯示為nginx-b~~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96211.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96211.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96211.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python辦公】字符分割拼接工具(GUI工具)

目錄 專欄導讀 項目簡介 功能特性 ?? 核心功能 1. 字符分割功能 2. 字符拼接功能 ?? 界面特性 現代化設計 用戶體驗優化 技術實現 開發環境 核心代碼結構 關鍵技術點 使用指南 安裝步驟 完整代碼 字符分割操作 字符拼接操作 應用場景 數據處理 文本編輯 開發輔助 項目優勢 …

Windows 命令行:dir 命令

專欄導航 上一篇:Windows 命令行:Exit 命令 回到目錄 下一篇:MFC 第一章概述 本節前言 學習本節知識,需要你首先懂得如何打開一個命令行界面,也就是命令提示符界面。鏈接如下。 參考課節:Windows 命令…

軟考高級--系統架構設計師--案例分析真題解析

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄前言試題一 軟件架構設計一、2019年 案例分析二、2020年 案例分析三、2021年 案例分析四、2022年 案例分析試題二 軟件系統設計一、2019年 案例分析二、2020年 案例分…

css中的性能優化之content-visibility: auto

content-visibility: auto的核心機制是讓瀏覽器智能跳過屏幕外元素的渲染工作,包括布局和繪制,直到它們接近視口時才渲染。這與虛擬滾動等傳統方案相比優勢明顯,只需要一行CSS就能實現近似效果。值得注意的是必須配合contain-intrinsic-size屬…

通過uniapp將vite vue3項目打包為android系統的.apk包,并實現可自動升級功能

打包vue項目,注意vite.config.ts文件和路由文件設置 vite.config.ts,將base等配置改為./ import {fileURLToPath, URL } from node:urlimport {defineConfig } from vite import vue from @vitejs/plugin-vue import AutoImport from unplugin-auto-import/vite import Com…

經營幫租賃經營板塊:解鎖資產運營新生態,賦能企業增長新引擎

在商業浪潮奔涌向前的當下,企業資產運營與租賃管理的模式不斷迭代,“經營幫” 以其租賃經營板塊為支點,構建起涵蓋多元業務場景、適配不同需求的生態體系,成為眾多企業破局資產低效困局、挖掘增長新動能的關鍵助力。本文將深度拆解…

C語言---編譯的最小單位---令牌(Token)

文章目錄C語言中令牌幾類令牌是編譯器理解源代碼的最小功能單元,是編譯過程的第一步。C語言中令牌幾類 1、關鍵字: 具有固定含義的保留字,如 int, if, for, while, return 等。 2、標識符: 由程序員定義的名稱,用于變…

機器學習 | Python中進行特征重要性分析的9個常用方法

在Python中,特征重要性分析是機器學習模型解釋和特征選擇的關鍵步驟。以下是9種常用方法及其實現示例: 1. 基于樹的模型內置特征重要性 原理:樹模型(如隨機森林、XGBoost)根據特征分裂時的純度提升(基尼不純度/信息增益)計算重要性。 from sklearn.ensemble import Ra…

心路歷程-了解網絡相關知識

在做這個題材的時候,考慮的一個點就是:自己的最初的想法;可是技術是不斷更新的; 以前的材料會落后,但是萬變不能變其中;所以呈現出來的知識點也相對比較老舊,為什么呢? 因為最新的素…

CAT1+mqtt

文章目錄 MQTT知識點mqtt數據固定報頭可變報頭(連接請求)有效載荷 阿里云MQTT測試訂閱Topic下發數據給MQTT.fxMQTT.fx 發布消息給服務器 下載mqtt(C-嵌入式版)我的W5500項目路徑使用Cat1連接阿里云平臺AT指令串口連接1. 開機聯網2. 激活內置SIM卡(貼片卡)3. 我這里使用連接的是…

AiPPT怎么樣?好用嗎?

AiPPT怎么樣?好用嗎?AiPPT 是一款智能高效的PPT生成工具,通過AI技術快速將主題或文檔(如Word/PDF)轉化為專業PPT,提供超10萬套行業模板,覆蓋商務、教育等22場景,支持一鍵生成大綱、文…

惡補DSP:2.F28335的定時器系統

一、定時器原理F28335 城市的三座時鐘塔(Timer0、Timer1、Timer2)是城市時間管理的核心設施,每座均為32位精度,依靠城市能源脈沖(系統時鐘 SYSCLKOUT,典型頻率為150 MHz)驅動。它們由兩個核心模…

用倒計時軟件為考研備考精準導航 復習 模擬考試 日期倒計時都可以用

考研,是一場與時間的博弈。從決定報名的那一刻起,日歷上的每一個數字都被賦予了特殊意義 —— 報名截止日、現場確認期、初試倒計時、成績查詢點…… 這些節點如同航標,指引著備考者的方向。而在這場漫長的征途里,一款精準、易用的…

React學習(七)

目錄:1.react-進階-antd-搜索2.react-進階-antd-依賴項說明 3.react-進階-antd-刪除1.react-進階-antd-搜索我們jsx代碼里只能返回一個最頂層的根元素下拉框簡化寫法:把這個對象結構賦值一下:清空定義個參數類型做修改事件需要定義三個…

Unix Domain Socket(UDS)和 TCP/IP(使用 127.0.0.1)進程間通信(IPC)的比較

Unix Domain Socket(UDS)和 TCP/IP(使用 127.0.0.1 或 localhost)都是進程間通信(IPC)的方式,但它們在實現、性能和適用場景上有顯著區別。以下是兩者的對比:1. 通信機制Unix Domain…

SQL中對時間操作的函數

以下是SQL中常用時間操作函數的匯總,按功能分類整理,結合多個權威來源內容綜合而成: 一、獲取當前時間 函數名稱功能說明示例適用數據庫CURDATE()獲取當前日期(不含時間)SELECT CURDATE(); → 2024-08-21MySQL, Mari…

NUS PC5215 Lecture分析 Week1 Python基礎

NUS PC5215 Lecture分析 Week1 Python基礎前言Python基礎數據類型保留字表達式Import 相關庫IEEE浮點數前言 課程網站 作為一名計算機本科畢業的學生,該課程有點類似于本科期間學的數值分析的進化版,大抵是教會你如何實現各種方法,諸如蒙特卡…

模型私有化部署(Ollama vLLM LMDeploy)

一、魔塔社區平臺介紹 1.1 什么是魔塔社區? 魔塔(ModelScope)是由阿里巴巴達摩院推出的開源模型即服務(MaaS)共享平臺,匯聚了計算機視覺、自然語言處理、語音等多領域的數千個預訓練AI模型。其核心理念是…

C++編程實踐--資源管理、標準庫、并發與并行

文章目錄 資源管理 資源訪問 指向資源句柄或描述符的變量,在資源釋放后立即賦予新值 lambda函數 當lambda會逃逸出函數外面時,禁止按引用捕獲局部變量 避免lambda表達式使用默認捕獲模式 資源分配與回收 避免出現delete this操作 使用恰當的方式處理new操作符的內存分配錯誤 …

“R語言+遙感”的水環境綜合評價方法實踐技術應用

專題一、R語言概述1.1 R語言特點(R語言)1.2 安裝R(R語言)1.3 安裝RStudio(R語言)(1)下載地址(2)安裝步驟(3)軟件配置1.4 第一個程序He…