1. 程式人生 > >nginx通過自定義header屬性來轉發不同的服務

nginx通過自定義header屬性來轉發不同的服務

背景:

因為後臺程式碼變動較大,程式碼上線後不能支援原有的ios APP軟體。然而App Store稽核的時間又較長,等新程式碼上線後,App Store不能下載最新的ios包,導致客戶不能正常訪問(原有的ios包又不能繼續支援)。

解決辦法:

ios開發人員自定義請求頭(這裡自定義為newapp)
在這裡插入圖片描述

通過配置nginx 匹配請求頭newapp 來轉發到預釋出環境(預釋出為最新程式碼),稽核通過後將nginx配置去掉即可。
核心:客戶端自定義的http header,在nginx的配置檔案裡能直接讀取到。
條件:header必須用減號“-”分隔單詞,nginx裡面會轉換為對應的下劃線“_”連線的小寫單詞。

修改nginx配置:
server {  
        listen 8008;  
        charset utf-8;  
        underscores_in_headers on;  
		location / {  
			alias d:/httpdemo/;  
			index index.html;  
			 #測試header轉發  
			if ($http_newapp = "130****8074") {  
				proxy_pass http://yfb_xx; 
			}  
    	}  
    } 
引數配置說明:
  • underscores_in_headers on:nginx是支援讀取非nginx標準的使用者自定義header的,但是需要在http或者server下開啟header的下劃線支援:
  • 比如我們自定義header為newapp,獲取該header時需要這樣:$http_newapp(一律採用小寫,而且前面多了個http_)
  • 如果需要把自定義header傳遞到下一個nginx:
    1.如果是在nginx中自定義採用proxy_set_header X_CUSTOM_HEADER $http_host;
    2.如果是在使用者請求時自定義的header,例如curl –head -H “X_CUSTOM_HEADER: foo” http://domain.com/api/test,則需要通過proxy_pass_header X_CUSTOM_HEADER來傳遞

相關推薦

nginx通過定義header屬性轉發不同服務

背景: 因為後臺程式碼變動較大,程式碼上線後不能支援原有的ios APP軟體。然而App Store稽核的時間又較長,等新程式碼上線後,App Store不能下載最新的ios包,導致客戶不能正常訪問(原有的ios包又不能繼續支援)。 解決辦法: ios開發人員自

excel2013如何通過定義排序方式進行排序

資料 process html 技術 完整 通過 序列 解決辦法 需求 在實際中,我們肯定會有這麽一種需求,即按照自定義的順序來排序。解決辦法就是,我們自定義一個序列給Excel,然後讓Excel按照這個序列來進行排序。如圖 【解決方法,教程視頻資料如下】 本教程視頻資料來

nginx新增定義header

nginx.conf,如下: 其中  Access-Control-Allow-Origin 是header 名字 "." 是對應的value server { listen 80 de

Nginx讀取定義header

原文地址:https://blog.csdn.net/xbynet/article/details/51899286underscores_in_headers on;2、比如我們自定義header為X-Real-IP,通過第二個nginx獲取該header時需要這樣:$http_x_real_ip; (一律

通過定義屬性,排他的原理實現列表的表頭和對應內容的切換

要點: 1.自定義屬性,可以用來存放類似於這個案例中索引的不是自帶的屬效能滿足的,通過setAttribute("自定義屬性名",值)來自定義一個屬性,切記不可直接通過this.自定義屬性來設定值    同時,獲取和移除自定義屬性,分別是getAttribute()和re

我的Android進階之旅------>Android如何通過定義SeekBar實現視訊播放進度條

首先來看一下效果圖,如下所示:其中進度條如下:接下來說一說我的思路,上面的進度拖動條有自定義的Thumb,在Thumb正上方有一個PopupWindow視窗,窗口裡面顯示當前的播放時間。在SeekBar右邊有一個文字框顯示當前播放時間/總時間。step1、先來看一看Popup

nginx proxy_set_header設定、定義header

語法: proxy_set_header field value; 預設值: proxy_set_header Host $proxy_host; proxy_set_header Connection close; 上下文: http, server, location 允許重新定義或者添加發往

Nginx的目錄檔案列表功能,和定義header和footer

ngx_http_autoindex_module  此模組用於自動生成目錄列表,ngx_http_autoindex_module只在 ngx_http_index_module模組未找到索引檔案時發出請求. nginx預設是不允許列出整個目錄的。 開啟目錄列表:

java 通過反射和定義泛型修改物件

public static <T> T Update(T beforeUpdate,T update){ try { if(beforeUpdate==null) return update; if(update==nul

關於nginx記錄使用者定義header

Nginx定義HEAD用到的是$http_head引數,head就是自定義的header名稱HEAD $cookie_[COOKI

net core天馬行空系列: 一個介面多個實現類,利用mixin技術通過定義服務名,實現精準屬性注入

系列目錄 1.net core天馬行空系列:原生DI+AOP實現spring boot註解式程式設計 2.net core天馬行空系列: 泛型倉儲和宣告式事物實現最優雅的crud操作        哈哈哈哈,大家好,我就是高產似母豬的三合。日常開發中,我們常會遇到這樣的

android:如何通過定義工程模板讓新建的工程都默認支持lambda表達式

wan tro idt ref height 代碼 spa span oid 首先參考這篇文章:自定義Android Studio工程模板,了解如何自定義模板然後結合我們上一篇文章 android: 在android studio中使用retrolambda的步驟的要點,修

玩轉angularJs——通過定義ng-model,不僅僅只是input可以有雙向綁定

spa ase write blur when mob ron lin for angularJs雙向綁定特性在開發中很方便很實用,但是由於ng-model一般只能掛在input上,因此我們需要自定義ng-model來在div等元素上使用該標簽。 自定義指令: 1

IIS ajax CORS 訪問發送定義Header時分析

nbsp post true cal 後臺 config -a coo function 場景: a站:http://127.0.0.1/a b站:http://localhost/b (IIS7.5) a站用ajax訪問b的資源,代碼如下: $.ajaxSetu

2.Border Layout 定義一個Layout完成布局。

log 自定義 min int size ger 官方文檔 implement for 目標:          1.每一個被添加到布局裏的控件都是QLayoutItem,我們根據方位添加。 2.定義一個結構體 ItemWrapper。裏面包含QLayoutItem

vue16 定義鍵盤屬性

1.0 init new window use pan ble inpu rip <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

Spring Cloud - 定義引導屬性

springcloud spring cloud springcloud微服務 微服務雲架構 引導過程添加的外部配置的默認屬性源是Config Server,但您可以通過將PropertySourceLocator類型的bean添加到引導上下文(通過spring.factories)添加其他源

源碼包安裝和快捷的管理nginx定義命令管理服務

定義開啟服務的函數 編寫一個啟動腳本管理軟件 源碼包安裝與管理 服務函數 安裝線上的生產服務器軟件包時大多會用源碼安裝,這是因為源碼安裝可以選擇最新的軟件包,而Linux系統自帶的軟件包一般都是最穩定的版本,但不能保證是最新的。源碼安裝還可以自行調整編譯參數,最大化地定制安裝結果。相對而言,源

weex 項目開發(五)定義 過濾函數 和 混合 及 定義 Header 組件

定義 blog weex top ber slice ear notice earch 1.自定義 過濾函數 src / filters / index.js /** * 自定義 過濾函數 */ export function host (url) { if (

定義header參數時的命名要求

劃線 remote 參數 sta clu nor invalid forward sendfile HTTP頭是可以包含英文字母([A-Za-z])、數字([0-9])、連接號(-)hyphens, 也可義是下劃線(_)。在使用nginx的時候應該避免使用包含下劃線的HTT