亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Nginx是一個(gè)高性能的Web服務(wù)器,代理服務(wù)器和反向代理服務(wù)器。它能夠處理高并發(fā)的請(qǐng)求,并且擁有強(qiáng)大的擴(kuò)展性和靈活性。在Nginx中,map是一個(gè)非常有用的指令,它可以讓您定義一個(gè)映射表,將一個(gè)值映射到另一個(gè)值上。本文將介紹Nginx map指令的詳細(xì)用法和實(shí)例。

 

Nginx map的用法及實(shí)例:

map指令的語(yǔ)法如下:

1、基本語(yǔ)法:

map $variable $new_value {
    old_value1  value1;
    old_value2  value2;
    ...
    default default_value;
}

參數(shù)說(shuō)明:

其中,$variable表示需要映射的變量,$new_value表示映射后的新值。在花括號(hào)中,每行都定義了一個(gè)映射關(guān)系,其中,value1和value2表示映射后的值,old_value1和old_value2表示需要映射的值,default_value表示默認(rèn)值。

2、實(shí)例:

1)將特定的請(qǐng)求頭轉(zhuǎn)換為不同的值:

map $http_user_agent $my_custom_header {
    default "";
    "~*Firefox" "Mozilla";
    "~*Chrome" "google";
    "~*Safari" "Apple";
}

在此示例中,如果請(qǐng)求頭中包含F(xiàn)irefox,則$my_custom_header將被設(shè)置為Mozilla。如果請(qǐng)求頭中包含Chrome,則$my_custom_header將被設(shè)置為Google。如果請(qǐng)求頭中包含Safari,則$my_custom_header將被設(shè)置為Apple。如果請(qǐng)求頭中不包含上述任何值,則$my_custom_header將被設(shè)置為空字符串。

2)重定向URL:

map $uri $new_uri {
    /old-uri /new-uri;
}
server {
    listen 80;
    server_name example.com;
    location / {
        return 301 $new_uri;
    }
}

在此示例中,如果請(qǐng)求的URI為/old-uri,則將其重定向到/new-uri。

3)使用多個(gè)變量:

map $scheme$request_method$server_port    $allow_cors {
    default "";
    "GET80http" "true";
    "GET80https" "true";
    "GET443https" "true";
}

 

在此示例中,如果請(qǐng)求方法為GET,協(xié)議為HTTP或HTTPS,并且服務(wù)器端口為80或443,則$allow_cors將被設(shè)置為true。否則,$allow_cors將為空字符串。

這是一些Nginx map的用法和示例。大家可以根據(jù)自己的需求使用 map指令來(lái)解決問(wèn)題。

4)使用map指令將URL中的文件擴(kuò)展名映射到MIME類(lèi)型:

map $request_filename $mime_type {
    ~.html 'text/html';
    ~.css 'text/css';
    ~.js 'application/JAVAscript';
    ~.png 'image/png';
    ~.jpg 'image/jpeg';
    ~.gif 'image/gif';
    default 'application/octet-stream';
}

 

在上面的例子中,當(dāng)請(qǐng)求的URL中包含.html時(shí),$mime_type將被映射為text/html,如果請(qǐng)求的URL中包含.css,則$mime_type將被映射為text/css,以此類(lèi)推。如果請(qǐng)求的URL中沒(méi)有匹配的值,則$mime_type將被映射為默認(rèn)值application/octet-stream。

5)將客戶(hù)端IP地址映射為國(guó)家代碼,以便根據(jù)客戶(hù)端所在的國(guó)家提供不同的內(nèi)容:

geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $country_code {
    default 'UNKNOWN';
    '' 'UNKNOWN';
    ~^[A-Z]{2}$ $geoip_country_code;
}

 

在上面的例子中,geoip_country指令將客戶(hù)端IP地址映射到所在的國(guó)家,$geoip_country_code表示國(guó)家代碼。然后,使用map指令將國(guó)家代碼映射到$country_code。如果沒(méi)有匹配的值,則$country_code將被映射為默認(rèn)值UNKNOWN。

6)將請(qǐng)求中的請(qǐng)求頭轉(zhuǎn)換為ngx變量。在以下示例中,map指令將User-Agent頭映射到$is_mobile變量,如果匹配移動(dòng)設(shè)備,該變量將設(shè)置為1,否則設(shè)置為0:

map $http_user_agent $is_mobile {
    default 0;
    ~*Android|webos|iphone|ipad|ipod|blackberry|iemobile|opera   mini   1;
}

 

上面的例子中,$http_user_agent表示User-Agent請(qǐng)求頭,$is_mobile表示是否為移動(dòng)設(shè)備。如果請(qǐng)求頭中包含移動(dòng)設(shè)備的關(guān)鍵字,例如android或iphone,則$is_mobile將被映射為1。否則,$is_mobile將被映射為默認(rèn)值0。

map指令還可以與其他指令一起使用。例如,以下示例將根據(jù)請(qǐng)求中的請(qǐng)求頭將請(qǐng)求重定向到不同的URL:

map $http_user_agent $mobile_redirect {
    default '';
    ~*android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini /mobile/;
}
server {
    listen 80;
    server_name example.com;
    if ($mobile_redirect) {
        rewrite ^/(.*)$ $mobile_redirect/$1 redirect;
    }
    ...
}

 

在上面的示例中,如果請(qǐng)求頭中包含移動(dòng)設(shè)備的關(guān)鍵字,則將請(qǐng)求重定向到/mobile/路徑。使用if指令檢查$mobile_redirect變量,如果它不為空,則使用rewrite指令將請(qǐng)求重定向到新的URL。

7)實(shí)現(xiàn)靈活的請(qǐng)求路由控制

通過(guò)map 指令,實(shí)現(xiàn)在內(nèi)網(wǎng) 通過(guò)公網(wǎng)地址訪問(wèn)內(nèi)部主機(jī)時(shí),自動(dòng)跳轉(zhuǎn)至內(nèi)網(wǎng)ip來(lái)訪問(wèn),詳細(xì)過(guò)程如下圖:

 


 

總之,map指令是Nginx中非常有用的指令之一,它可以將一個(gè)值映射到另一個(gè)值,并且可以與其他指令一起使用,以實(shí)現(xiàn)各種不同的功能。使用map指可以提高Nginx的靈活性和可擴(kuò)展性,因此在Nginx配置中使用map指令是一種不錯(cuò)的實(shí)踐。

寫(xiě)在最后:

自我設(shè)限,固步自封,唯有突破極限,才能發(fā)掘潛能。以上就是本期整理的《如何使用Nginx Map指令簡(jiǎn)化重定向規(guī)則,提升用戶(hù)體驗(yàn)》,自己經(jīng)歷過(guò)的風(fēng)雨,所以知道你也會(huì)堅(jiān)強(qiáng)。你的【評(píng)論】+【點(diǎn)贊】+【關(guān)注】,我會(huì)自動(dòng)解讀為認(rèn)可。


作者簡(jiǎn)介:

我是“網(wǎng)絡(luò)系統(tǒng)技藝者”,系統(tǒng)運(yùn)維工程師一枚,持續(xù)分享【網(wǎng)絡(luò)技術(shù)+系統(tǒng)運(yùn)維技術(shù)】干貨。

分享到:
標(biāo)簽:Nginx
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定