HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    nginx內(nèi)網(wǎng)轉(zhuǎn)外網(wǎng)(nginx轉(zhuǎn)發(fā)內(nèi)網(wǎng)到外網(wǎng))

    發(fā)布時(shí)間:2023-03-13 00:32:31     稿源: 創(chuàng)意嶺    閱讀: 73        問大家

    大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于nginx內(nèi)網(wǎng)轉(zhuǎn)外網(wǎng)的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來(lái)看看吧。

    ChatGPT國(guó)內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    本文目錄:

    nginx內(nèi)網(wǎng)轉(zhuǎn)外網(wǎng)(nginx轉(zhuǎn)發(fā)內(nèi)網(wǎng)到外網(wǎng))

    一、Ribbon實(shí)現(xiàn)前端負(fù)載均衡(本地路由導(dǎo)向)-加在消費(fèi)者端

    1配置消費(fèi)者路徑能支持通用訪問

    如用 provider-user 替換 localhost:7900

    2配置要讓這個(gè)application.name進(jìn)行解析,到Eureka換成對(duì)應(yīng)地址

    ribbon和nginx比較

    1)nginx(外網(wǎng)轉(zhuǎn)內(nèi)網(wǎng),沒有進(jìn)行業(yè)務(wù)加工)基于C語(yǔ)言,快速,性能高達(dá)5w/s

    redis 5w/s,RibbitMQ (進(jìn)行了業(yè)務(wù)加工)1.2w.s,ApacheActiveMQ 0.6w/s

    kafuka 20w/s~50w/s大數(shù)據(jù)用(可以丟失數(shù)據(jù),大數(shù)據(jù)取的是近似值)

    Zuul2.0 200w/s

    負(fù)載均衡、反向代理、代理后端服務(wù)器。隱藏真實(shí)地址,防火墻設(shè)置真實(shí)地址不能外網(wǎng)直接訪問

    2)Ribbon負(fù)載均衡,前端,客戶端開始導(dǎo)向(轉(zhuǎn)向)

    二、nginx只用一個(gè)公網(wǎng)端口轉(zhuǎn)發(fā)多個(gè)內(nèi)網(wǎng)服務(wù)

      一個(gè)常見的問題,生產(chǎn)環(huán)境的一臺(tái)有公網(wǎng)ip的服務(wù)器,為了安全起見,運(yùn)維只給開一個(gè)端口,于是考慮用nginx根據(jù)url的前綴路徑來(lái)轉(zhuǎn)發(fā)到不同服務(wù)。例如:

    以springboot工程為例,我們自己的web服務(wù)一般都會(huì)通過設(shè)置

    來(lái)給該服務(wù)的所有url設(shè)置一個(gè)統(tǒng)一的前綴路徑 /xxxxxx 。這時(shí)候nginx就可以將所有帶有前綴 /xxxxxx 的請(qǐng)求轉(zhuǎn)發(fā)到該服務(wù)。這是一個(gè)很簡(jiǎn)單的事。

      問題是有很多第三方服務(wù),例如kafka manager,他是沒有這樣的前綴的,假設(shè)kafka安裝在 192.168.0.182 機(jī)器上,kafka manager的訪問地址就是 http://192.168.0.182:3000 ,我們當(dāng)然可以在首次訪問時(shí)通過地址 http://192.168.0.182:3000/kafka 讓nginx根據(jù) /kafka 識(shí)別到這是kafka manager服務(wù)并轉(zhuǎn)發(fā)到 http://192.168.0.182:3000 ,但是我們打開kafka manager頁(yè)面上的鏈接時(shí)是不會(huì)有我們自己添加的 /kafka 前綴的,上面的方法失效。

      我們都知道http服務(wù)是無(wú)狀態(tài)的,就像上面所說即使訪問了kafka manager的主頁(yè),點(diǎn)擊主頁(yè)上按鈕發(fā)起的請(qǐng)求也無(wú)法被識(shí)別為kafka manager請(qǐng)求。但是web服務(wù)絕大多是都是需要有狀態(tài)的,主要有session/cookie、token兩種方式來(lái)解決這個(gè)問題。也可以用來(lái)解決上面的問題。

    在nginx中配置:

      這時(shí)候又有一個(gè)問題,使用同樣的ip:port來(lái)訪問這些服務(wù),在瀏覽器看來(lái)所有的服務(wù)都是一個(gè)域的,他們的cookie就會(huì)是同一個(gè)cookie,這時(shí)候nginx沒辦法根據(jù)cookie的不同轉(zhuǎn)發(fā)到不同的服務(wù)。

      我們想到了給每個(gè)服務(wù)配置一個(gè)域名(沒有那么多公網(wǎng)域名可用,就在本地hosts文件配置了),產(chǎn)生跨域的效果,讓不同的服務(wù)有獨(dú)立的cookie。

       從來(lái)都是解決跨域問題,從沒想過有一天要主動(dòng)跨域

      如果配置了域名,完全可以讓nginx根據(jù)域名來(lái)做識(shí)別轉(zhuǎn)發(fā),為什么要用cookie呢?如果你都是配置了公網(wǎng)域名,那確實(shí)可以這么干,但是我們是改的hosts文件,保不齊誰(shuí)的域名就寫錯(cuò)了,或者因?yàn)橹皇潜镜豩osts文件的修改根本就沒必要統(tǒng)一域名,這時(shí)候根據(jù)域名做轉(zhuǎn)發(fā)就不行了。

      kafka manager的訪問是不需要認(rèn)證的,暴露在公網(wǎng)上、面向所有人是一件可怕的事,我們是設(shè)置了VPN和訪問白名單。

    三、10. Nginx實(shí)現(xiàn)反向代理

    反向代理: reverse proxy, 指的是代理外網(wǎng)用戶的請(qǐng)求到內(nèi)部的指定的服務(wù)器, 并將數(shù)據(jù)返回給用戶的一種方式, 這是用的比較多的一種方式

    Nginx除了可以為企業(yè)提供高性能的web服務(wù)之外, 另外還可以將Nginx本身不具備的請(qǐng)求通過某種預(yù)定義的協(xié)議轉(zhuǎn)發(fā)至其他服務(wù)器處理, 不同的協(xié)議就是Nginx服務(wù)器與其他服務(wù)器進(jìn)行通信的一種規(guī)范, 主要在不同的場(chǎng)景使用以下模塊實(shí)現(xiàn)不同的功能

    生成環(huán)境部署架構(gòu):

    訪問邏輯圖:

    Nginx反向代理http服務(wù):

    1. proxy_pass

    2. proxy_hide_header field

    修改前, 響應(yīng)報(bào)文頭部會(huì)攜帶ETag信息

    修改后ETag信息被隱藏

    3. proxy_pass_header field

    4. proxy_pass_request_body

    5. proxy_pass_request_headers

    6. proxy_set_header

    由于proxy_set_header只是修改了請(qǐng)求報(bào)文的頭部信息, 添加了自定義的字段, 因此, 還需要在后端服務(wù)器修改日志定義格式, 才能方便將客戶端ip記錄到日志信息中

    注意1:通過set_proxy_header自定義變量只是給請(qǐng)求報(bào)文添加了一個(gè)自定義的字段, 其字段值是人為根據(jù)系統(tǒng)內(nèi)置變量設(shè)定的

    注意2: 這種方法, 在多級(jí)代理的情況下, 并不能將客戶端ip, 逐層的傳給后端服務(wù)器, 而是需要利用$proxy_add_x_forwarded_for變量實(shí)現(xiàn)

    注意3: 如果一定要使用proxy_set_header去傳遞客戶端ip和每一層代理的ip地址, 那么需要在每一層nginx代理都開啟proxy_set_header, 并且設(shè)置不同的自定義變量去引用nginx自帶變量$remote_addr, 這樣每一級(jí)nginx都會(huì)記錄上一級(jí), 也就包括客戶端的ip地址, 同時(shí), 在后端服務(wù)器的日志格式中, 要添加多個(gè)nginx自定義的變量, 這樣也可以把客戶端ip和中間經(jīng)過的代理的ip全部傳遞給后端的服務(wù)器

    proxy_add_x_forwarded_for實(shí)現(xiàn)多級(jí)代理ip地址透?jìng)魇纠? 需要在每一級(jí)代理都開啟

    實(shí)驗(yàn)環(huán)境:

    7. 有關(guān)反向代理時(shí)間的幾個(gè)參數(shù)

    8. proxy_ignore_client_abort

    9. hash表大小的設(shè)置

    客戶端 ----- http協(xié)議 ------- nginx(代理服務(wù)器,10.0.0.86) ----- http --- apache (10.0.0.85)

    客戶端, 通過訪問nginx上定義的虛擬主機(jī)中的server_name域名, 通過內(nèi)部定義的location匹配規(guī)則, 被轉(zhuǎn)發(fā)到10.0.0.85服務(wù)器

    代理服務(wù)器與后端服務(wù)器連接出現(xiàn)問題可能發(fā)生的報(bào)錯(cuò):

    如果后端服務(wù)器想把圖片資源放到固定的目錄下, 也可以自定義, 比如存到/var/www/html/static, 那么nginx的location就要修改為如下:

    緩存功能相關(guān)參數(shù):

    實(shí)驗(yàn)環(huán)境:

    proxy_pass 可以讓Nginx將客戶端請(qǐng)求轉(zhuǎn)發(fā)至后端單臺(tái)服務(wù)器, 但是無(wú)法轉(zhuǎn)發(fā)至特定的一組服務(wù)器, 而且不能對(duì)后端服務(wù)器提供相應(yīng)的服務(wù)器狀態(tài)監(jiān)測(cè).

    Nginx可以基于 ngx_http_upstream_module 模塊提供服務(wù)器分組轉(zhuǎn)發(fā), 權(quán)重分配, 狀態(tài)監(jiān)測(cè), 使用不同的調(diào)度算法等高級(jí)功能

    關(guān)于ip_forward

    注意: 本實(shí)驗(yàn)過程要先關(guān)閉緩存

    訪問固定的URI會(huì)被調(diào)度到相同的服務(wù)器

    四、通過 Nginx 的正向代理審計(jì)監(jiān)控內(nèi)網(wǎng)用戶的外網(wǎng)訪問記錄

    一個(gè)位于客戶端和目標(biāo)服務(wù)器之間的 Nginx 正向代理服務(wù)器, 客戶端向 Nginx 正向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)服務(wù)器,然后代理向目標(biāo)服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端及本地代理服務(wù)器緩存

    適用場(chǎng)景:

    正向代理又細(xì)分為 http、https 流量的 透明代理 和 非透明代理

    如何代理加密的 HTTPS 流量是正向代理需要解決的主要問題, 當(dāng)前主要的兩種方式:

    1、透明代理, 利用本機(jī) hosts 或 DNS 解析待訪問的目標(biāo)域名到代理服務(wù)器 Ip

    2、非透明代理, 需在客戶終端設(shè)置代理服務(wù)器信息

    1、HTTP CONNECT 隧道 方式(非透明代理)

    2、NGINX Stream 方式(HTTPS 流量的透明正向代理)

    以上就是關(guān)于nginx內(nèi)網(wǎng)轉(zhuǎn)外網(wǎng)相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    bing的聊天機(jī)器人(bing聊天機(jī)器人下載)

    chatonline漢語(yǔ)(chatting中文)

    bing國(guó)內(nèi)版網(wǎng)頁(yè)地址(bingo網(wǎng)頁(yè))

    度假酒店景觀設(shè)計(jì)說明(酒店景觀方案)

    網(wǎng)絡(luò)營(yíng)銷方式有幾種(網(wǎng)絡(luò)營(yíng)銷方式有幾種方式)