Nginx學(xué)習(xí):代理模塊(四)響應(yīng)頭與SSL響應(yīng)頭相關(guān)的配置也和我們之前在 FastCGI 系列學(xué)過的響應(yīng)頭配置是類似的,這一塊也比較簡單。而另一部分則是 Proxy 模塊另一個特有的功能,SSL 相關(guān)的配置。不過這一塊吧,一是配置比較麻煩,二是平常使用到的也比較少,所以我也是以學(xué)習(xí)了解的狀態(tài)來進(jìn)行的,偷個懶,不會進(jìn)行相應(yīng)的配置測試。有興趣的小伙伴可以自己配一配哦。 今天所有的配置都可以在 http、server、location 下進(jìn)行配置,有特殊情況的我會單獨(dú)說。 Proxy響應(yīng)頭操作響應(yīng)頭主要針對的是響應(yīng)的操作,其實(shí)也就是對于后端服務(wù)返回的響應(yīng)頭,我們可以進(jìn)行一些顯示、隱藏、忽略之類的操作。這個之前在 FastCGI 學(xué)習(xí)時也都接觸過了,所以咱們還是先了解一下這幾個配置指令,然后再簡單測試一下就好了。 proxy_headers_hash_bucket_size設(shè)置 proxy_hide_header 和 proxy_set_header 指令使用的哈希表的桶大小。
默認(rèn)值 64 。 proxy_headers_hash_max_size設(shè)置 proxy_hide_header 和 proxy_set_header 指令使用的哈希表的最大大小。
默認(rèn)值 512 ,關(guān)于這個和上面那個配置指令,都是和 設(shè)置哈希表 有關(guān)的,這個之前在 Nginx學(xué)習(xí):響應(yīng)頭與Map變量操作 https://mp.weixin.qq.com/s/2pXjPD9_c-mYUMQNcwjDCA 中已經(jīng)學(xué)習(xí)過了,不記得的小伙伴可以回去看下哦。 proxy_hide_header默認(rèn)情況下,Nginx 不會將代理服務(wù)器的響應(yīng)中的標(biāo)頭字段“Date”、“Server”、“X-Pad”和“X-Accel-...”傳遞給客戶端。
沒有默認(rèn)值,proxy_hide_header 指令設(shè)置不會傳遞的附加字段。相反,如果需要允許傳遞字段,則可以使用 proxy_pass_header 指令。 proxy_pass_header允許將禁用的標(biāo)頭字段從代理服務(wù)器傳遞到客戶端。
禁用標(biāo)頭就是 proxy_hide_header 中說的那些默認(rèn)頭字段,主要是 “Date”, “Server”, “X-Pad”, 和 “X-Accel-...” 這些。和 proxy_hide_header 是反過來的,同時出現(xiàn)的話也和 FastCGI 中是一樣的,就看誰后設(shè)置。 proxy_ignore_headers禁用對來自代理服務(wù)器的某些響應(yīng)頭字段的處理。
以下字段可以忽略:“X-Accel-Redirect”、“X-Accel-Expires”、“X-Accel-Limit-Rate”(1.1.6)、“X-Accel-Buffering”(1.1.6) 、“X-Accel-Charset”(1.1.6)、“Expires”、“Cache-Control”、“Set-Cookie”(0.8.44)和“Vary”(1.7.7)。 如果未禁用,則處理這些標(biāo)頭字段具有以下效果:
主要就是針對這些字段的特殊效果,如果不設(shè)置忽略,就會產(chǎn)生相應(yīng)的效果,如果設(shè)置忽略了,就不會出現(xiàn)這些能力。 響應(yīng)頭測試簡單測試兩個吧。
后端 PHP 代碼我們還是之前我們測試用過的那個,直接指定 oopp 這樣一個自定義的響應(yīng)頭。
然后進(jìn)行測試就好了。 SSL這里的 SSL 配置主要是代理服務(wù)器與后端服務(wù)器的安全傳輸,不過說實(shí)話,大部分情況下我們會在內(nèi)網(wǎng)使用反向代理進(jìn)行負(fù)載均衡或部分應(yīng)用的代理配置,很少會進(jìn)行外網(wǎng)反向代理。即使有的話,不使用任何配置,直接去代理 HTTPS 也是可以的,代理請求的內(nèi)容通過 WireShark 抓取的也是加密的內(nèi)容。只不過使用 Proxy 本身的 SSL 配置指令,會驗證證書情況,保證完整的 SSL 驗證握手過程,安全性沒得說。當(dāng)然,這也不是沒有代價的,加解密肯定是要耗費(fèi)系統(tǒng)資源的。 因此,這一塊的內(nèi)容我們了解一下就好了,我也不做演示了,確實(shí)沒用過,概念也略有模糊的地方。如果確實(shí)有特殊的需要,比如說我們的后端服務(wù)器必須保障數(shù)據(jù)安全的話,并且是遠(yuǎn)程的傳輸,不在內(nèi)網(wǎng)范圍內(nèi),就可以通過下面的設(shè)置來進(jìn)行安全傳輸配置。 如果對這一塊有了解或者在實(shí)戰(zhàn)中使用過有心得的大佬們看到了,可以評論留言帶咱們一起學(xué)習(xí)一下哦。 proxy_ssl_verify啟用或禁用代理 HTTPS 服務(wù)器證書的驗證。
默認(rèn)值是 off 。 proxy_ssl_certificate指定帶有 PEM 格式證書的文件,用于向代理 HTTPS 服務(wù)器進(jìn)行身份驗證。
沒有默認(rèn)值,從 1.21.0 版本開始,文件名中可以使用變量。 proxy_ssl_certificate_key使用 PEM 格式的密鑰指定一個文件,用于向代理 HTTPS 服務(wù)器進(jìn)行身份驗證。
可以指定值 engine:name:id 代替文件 (1.7.9),該文件從 OpenSSL 引擎名稱加載具有指定 id 的密鑰。從 1.21.0 版本開始,文件名中可以使用變量。 proxy_ssl_ciphers指定對代理 HTTPS 服務(wù)器的請求啟用的密碼。
默認(rèn)值是 DEFAULT,密碼以 OpenSSL 庫可以理解的格式指定??梢允褂谩皁penssl ciphers”命令查看完整列表。 proxy_ssl_conf_command在與代理 HTTPS 服務(wù)器建立連接時設(shè)置任意 OpenSSL 配置命令。
沒有默認(rèn)值,使用 OpenSSL 1.0.2 或更高版本時支持該指令??梢栽谕患墑e上指定多個 proxy_ssl_conf_command 指令。當(dāng)且僅當(dāng)當(dāng)前級別上沒有定義 proxy_ssl_conf_command 指令時,這些指令才從先前的配置級別繼承。請注意,直接配置 OpenSSL 可能會導(dǎo)致意外行為。 proxy_ssl_crl指定一個 PEM 格式的帶有撤銷證書 (CRL) 的文件,用于驗證代理 HTTPS 服務(wù)器的證書。
沒有默認(rèn)值。 proxy_ssl_name允許覆蓋用于驗證代理 HTTPS 服務(wù)器證書并在與代理 HTTPS 服務(wù)器建立連接時通過 SNI 傳遞的服務(wù)器名稱。
默認(rèn)情況下,使用 proxy_pass URL 的主機(jī)部分,也就是默認(rèn)值是 proxy_ssl_password_file指定一個包含密鑰密碼短語的文件,其中每個密碼短語在單獨(dú)的行中指定。
沒有默認(rèn)值,加載密鑰時會依次嘗試密碼短語。 proxy_ssl_protocols啟用對代理 HTTPS 服務(wù)器的請求的指定協(xié)議。
默認(rèn)值是 TLSv1 TLSv1.1 TLSv1.2 。 proxy_ssl_server_name在與代理 HTTPS 服務(wù)器建立連接時,啟用或禁用通過 TLS 服務(wù)器名稱指示擴(kuò)展(SNI、RFC 6066)傳遞服務(wù)器名稱。
默認(rèn)是 off 。 proxy_ssl_session_reuse確定在使用代理服務(wù)器時是否可以重用 SSL 會話。
默認(rèn)值是 on ,如果日志中出現(xiàn)“SSL3_GET_FINISHED:digest check failed”錯誤,請嘗試禁用會話重用。 proxy_ssl_trusted_certificate指定具有 PEM 格式的受信任 CA 證書的文件,用于驗證代理 HTTPS 服務(wù)器的證書。
沒有默認(rèn)值。 proxy_ssl_verify_depth在代理的 HTTPS 服務(wù)器證書鏈中設(shè)置驗證深度。
默認(rèn)值是 1 。 總結(jié)今天的內(nèi)容超級簡單吧,就跟看文檔一樣的,就一個簡單的響應(yīng)頭相關(guān)的兩個配置指令的測試。雖說這樣的學(xué)習(xí)效率很差,但是,如果確實(shí)是不經(jīng)常使用的內(nèi)容,混個眼熟也沒什么不好。知識浩瀚,我們程序員似乎總也學(xué)不完一樣,編程語言就不說了,前兩天還是大數(shù)據(jù),過兩天就是人工智能,門都沒入呢別的又來了。先不說各種概念框架的底層原理,光是文檔估計看全都沒幾個人吧。所以,咱也不能太浪費(fèi)自己的精力,有的時候,總是要有一些取舍的。到這里,將來如果真的需要的時候,起碼第一時間能馬上想起來,完了再針對具體的業(yè)務(wù)場景進(jìn)行深入的研究和學(xué)習(xí),也是不錯的選擇哦。 參考文檔: http:///en/docs/http/ngx_http_proxy_module.html |
|