日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

2021年Nginx配置搭建HTTPS正向代理服务的2种方式

發(fā)布時間:2024/1/1 Nginx 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021年Nginx配置搭建HTTPS正向代理服务的2种方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄???????

一、背景

二、Nginx配置方案

三、總結(jié)

一、背景

目前Nginx常用的操作就是作為反向代理服務器,還被用于搭建負載均衡,而某些場景下則需要使用正向代理,正向代理的特點如下:

  • 客戶端非常明確要訪問的服務器地址;

  • 服務器只清楚請求來自哪個代理服務器,而不清楚來自哪個具體的客戶端;

  • 正向代理模式屏蔽或者隱藏了真實客戶端信息。

常見的情況是,當開發(fā)好的應用部署在多臺服務器上時,且部分服務器屬于內(nèi)網(wǎng),只有幾臺服務器可以訪問互聯(lián)網(wǎng),那么部署在內(nèi)網(wǎng)的服務器上的應用,如果涉及到調(diào)用第三方互聯(lián)網(wǎng)API的情況時(比如:內(nèi)網(wǎng)調(diào)用微信支付API、內(nèi)網(wǎng)調(diào)用公眾號API等等),在不改變調(diào)用方URL的情況下,可以使用正向代理服務進行網(wǎng)絡調(diào)用。

例如作者目前的環(huán)境就是擁有1臺公網(wǎng)阿里云服務器,多臺內(nèi)網(wǎng)阿里云服務器,部署在內(nèi)網(wǎng)的微服務需要訪問第三方支付接口、第三方短信系統(tǒng)、第三方認證系統(tǒng)等。

二、Nginx配置方案

目前,作者發(fā)現(xiàn)網(wǎng)上這方面相關的文章都沒有寫出一個較好的說明,看起來比較費勁,配置到自己的環(huán)境中有時也不好使,大多數(shù)好使的情況配置的都是HTTP協(xié)議的正向代理,而實際調(diào)用第三方API時,有很多都是HTTPS協(xié)議的,那就需要通過Nginx配置基于HTTPS協(xié)議的正向代理。

本文主要說明基于HTTPS的正向代理配置方案。

方案一:基于客戶端輸入HTTP請求,Nginx代理HTTPS協(xié)議

方案二:基于Nginx三方模塊ngx_http_proxy_connect_module實現(xiàn)HTTPS代理

先來看一下,正常情況下的HTTP協(xié)議的正向代理如何配置?

server?{????????listen?1443; charset utf-8;?????????#DNS解析(核心配置)?????????resolver?10.2.1.10; client_max_body_size 50m;?????????access_log?logs/access_proxy.log;????????location?/?{????????????????proxy_pass?http://$http_host$request_uri; proxy_connect_timeout 10;????????????????proxy_send_timeout?10;????????????????proxy_read_timeout?10;????????????????proxy_redirect?????off; proxy_set_header Host $http_host; proxy_buffers 256 4k; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_502;????????????????proxy_max_temp_file_size?0k; } }

如上配置就是一個正常情況下的HTTP協(xié)議的代理,設置完成后重啟Nginx。

測試時,通常有如下幾種配置方式:

1、系統(tǒng)層面配置

/etc/profile文件增加全局系統(tǒng)代理

export HTTP_PROXY=http://ip:1443

2、CURL測試方面配置

curl --proxy?ip:1443?http://www.baidu.com

3、應用方面

Java應用底層網(wǎng)絡連接對象都提供了設置代理的接口,傳遞參數(shù)即可。

而本文梳理的配置方案實現(xiàn)如下:

方案一:基于客戶端輸入HTTP請求,Nginx代理HTTPS協(xié)議

這種方案實現(xiàn)的效果是,改變客戶端的請求協(xié)議為HTTP協(xié)議,然后在Nginx中進行協(xié)議轉(zhuǎn)換,即可實現(xiàn)對HTTPS協(xié)議的代理,例如想代理https://www.baidu.com,當使用這種方案配置時,客戶端的輸入地址為:http://www.baidu.com,核心配置如下:

server {???listen?1443;???charset?utf-8;???#DNS解析(核心配置)???resolver?10.2.1.10;???client_max_body_size?????50m;???access_log?logs/access_proxy.log;???location?/?{????????proxy_pass?https://$http_host$request_uri;????????set?$fixed_destination?$http_destination;????????if?(?$http_destination?~*?^http(.*)$?)?{???????????set?$fixed_destination?https$1;????????}??????? proxy_set_header?Destination?$fixed_destination;??????? proxy_connect_timeout?10;????????proxy_send_timeout?10;????????proxy_read_timeout?10;????????proxy_redirect?????off;????????proxy_set_header?Host?$http_host;????????proxy_buffers?256?4k;????????proxy_next_upstream?error?timeout?invalid_header?http_502;????????proxy_max_temp_file_size?0k;????????proxy_ssl_server_name?on;????}}

該配置增加對HTTP協(xié)議的判斷,并轉(zhuǎn)換為HTTPS方式,從而實現(xiàn)了Nginx服務器代理HTTPS地址的一種方法。

方案二:基于Nginx三方模塊ngx_http_proxy_connect_module實現(xiàn)HTTPS代理

這種方案需要為Nginx安裝一個第三方的一個模塊,模塊地址為:

https://github.com/chobits/ngx_http_proxy_connect_module

其項目介紹中,已經(jīng)說明了如何安裝該模塊,不過這里我需要補充的是,在執(zhí)行configure時,建議增加上之前Nginx中的配置參數(shù)(nginx -V)方式進行獲取,防止影響之前的Nginx配置。

作者推薦大概的操作如下:

1、根據(jù)Github的介紹,下載模塊并進行patch操作

2、執(zhí)行configure操作(建議加上自己的之前配置)

3、make

4、make upgrade

5、make install

當安裝模塊成功后,Nginx代理HTTPS協(xié)議的地址核心配置如下:

server {??? listen?1443;??? charset?utf-8; #DNS解析(核心配置) resolver 10.2.1.10; client_max_body_size 50m; access_log logs/access_proxy.log;? #need ngx_proxy module??? proxy_connect;??? proxy_connect_allow????????????443?80;??? proxy_connect_connect_timeout??10s;??? proxy_connect_read_timeout?????10s;??? proxy_connect_send_timeout?????10s;?????location?/?{????????proxy_pass?$scheme://$http_host$request_uri;????????proxy_connect_timeout?10; proxy_send_timeout 10; proxy_read_timeout 10; proxy_redirect off; proxy_set_header Host $http_host; proxy_buffers 256 4k; proxy_next_upstream error timeout invalid_header http_502; proxy_max_temp_file_size 0k;????????proxy_ssl_server_name?on; }}

這樣當我們的客戶端輸入原始HTTPS地址時,配置了正向代理,即可以實現(xiàn)在不改變客戶端請求的情況下,調(diào)用HTTPS接口。

三、總結(jié)

本文介紹了2種方式,用Nginx搭建正向代理服務器:

方案一:基于客戶端輸入HTTP請求,Nginx代理HTTPS協(xié)議

方案二:基于Nginx三方模塊ngx_http_proxy_connect_module實現(xiàn)HTTPS代理

總結(jié)

以上是生活随笔為你收集整理的2021年Nginx配置搭建HTTPS正向代理服务的2种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。