欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx反向代理后無限重定向的問題解決方法

 更新時(shí)間:2023年08月10日 09:16:47   作者:LYX6666  
這篇文章主要為大家介紹了nginx反向代理后無限重定向的問題解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

先說說奇葩的需求:https轉(zhuǎn)其他網(wǎng)站的http

在項(xiàng)目里用iframe內(nèi)嵌其他網(wǎng)站,這個(gè)“其他網(wǎng)站”不是我們開發(fā)的,并且是http,
但瀏覽器會(huì)默認(rèn)阻止從https網(wǎng)站向http地址發(fā)起請(qǐng)求

因此初步的解決方案是:用我們自己的服務(wù)器nginx轉(zhuǎn)發(fā)一次,雖然服務(wù)器到“其他網(wǎng)站”的傳輸還是明文,但至少可以做到甩鍋(至少用戶到我們的服務(wù)器的傳輸是SSL......)

然后這個(gè)“其他網(wǎng)站”就出現(xiàn)了無限重定向問題。

另外,根據(jù)以往的經(jīng)歷,在給WordPress加https的時(shí)候,也可能會(huì)遇到無限重定向的問題。

原因

本質(zhì)上是因?yàn)椋?ldquo;其他網(wǎng)站”的服務(wù)程序具有請(qǐng)求頭校驗(yàn)。

通常來說,nginx轉(zhuǎn)發(fā)的請(qǐng)求,是帶有原始請(qǐng)求頭信息的請(qǐng)求。
比如:

nginx服務(wù)器的地址是https://server1.domin:1111

生產(chǎn)服務(wù)器的地址是http://server2.domin:2222

瀏覽器向https://server1.domin:1111發(fā)起請(qǐng)求

此時(shí),雖然nginx把請(qǐng)求代理到了http://server2.domin:2222但由于一系列的參數(shù)設(shè)置,http請(qǐng)求頭中的信息還是https://server1.domin:1111

這種情況下,如果“其他網(wǎng)站”的服務(wù)程序(Apache或nginx)中加入了請(qǐng)求頭校驗(yàn),也就是說,如果端口不是2222,就重定向;

如果地址不是server2.domin,就重定向。

而我們的nginx已經(jīng)把請(qǐng)求頭改成了原始信息,自然不能通過他們的驗(yàn)證,所以就會(huì)被強(qiáng)制重定向了。

如圖,它把我的38004端口的請(qǐng)求重定向到了默認(rèn)的443,說明對(duì)方服務(wù)器有地址校驗(yàn),而且重定向只改變了端口。

而如果我的nginx恰好也用的443,就會(huì)無限重定向了。

解決

我們先來看看通常使用的nginx的重寫參數(shù):

server {
    listen 38002 ssl;
    server_name server1.domin;
    ssl_certificate server1.domin.cer;
    ssl_certificate_key server1.domin.key;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
        proxy_pass http://server2.domin:2222/;
    }
}

這種情況下,就是直接在代理的請(qǐng)求中,加入原始請(qǐng)求頭信息

那么我們?cè)趺锤哪兀?/p>

我們要讓對(duì)方服務(wù)器認(rèn)為,nginx發(fā)過去的請(qǐng)求不是代理過去的,而是直接發(fā)過去的。

再換種方式說,此時(shí)nginx的作用不再是反向代理,而是正向代理,目的是隱藏真正的請(qǐng)求信息,讓對(duì)方服

務(wù)器認(rèn)為就是nginx直接請(qǐng)求的對(duì)方服務(wù)器。

所以我們要把ip、端口等等參數(shù)直接寫死。

server {
    listen 443 ssl;
    server_name server1.domin;
    ssl_certificate server1.domin.cer;
    ssl_certificate_key server1.domin.key;
    location / {
        proxy_set_header Host server2.domin; // 對(duì)方服務(wù)器的域名
        proxy_set_header X-Real-IP 123.123.123.123; // 對(duì)方服務(wù)器的真實(shí)地址,從控制臺(tái)中找到
        proxy_set_header X-Forwarded-For $123.123.123.123:80;
        proxy_set_header X-Forwarded-Host server2.domin; // 對(duì)方服務(wù)器的域名
        proxy_set_header X-Forwarded-Port 80; // 對(duì)方服務(wù)器的端口
        proxy_pass http://server2.domin:2222/;
    }
}

于是代理過程就變成了這樣:

總結(jié)

在我們不得不用nginx代理,并且無法讓對(duì)方配合的情況下

只要把http中的請(qǐng)求頭信息替換為對(duì)方網(wǎng)站的請(qǐng)求頭信息(而不是使用原始信息)

就可以通過對(duì)方服務(wù)器的host驗(yàn)證了。

時(shí)間倉促,有些地方可能說的不準(zhǔn),但目前能用,如有錯(cuò)誤歡迎指正。

以上就是nginx反向代理后無限重定向的問題解決方法的詳細(xì)內(nèi)容,更多關(guān)于nginx反向代理重定向的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 通過nginx反向代理來調(diào)試代碼的實(shí)現(xiàn)

    通過nginx反向代理來調(diào)試代碼的實(shí)現(xiàn)

    這篇文章主要介紹了通過nginx反向代理來調(diào)試代碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • nginx使用nginx-rtmp-module模塊實(shí)現(xiàn)直播間功能

    nginx使用nginx-rtmp-module模塊實(shí)現(xiàn)直播間功能

    做的過程出現(xiàn)很多問題,環(huán)境其實(shí)就需要nginx就可以,然后就是在播放的問題,m3u8的格式,mac直接訪問就支持,蘋果系統(tǒng)原生H5支持m3u8,還有就是手機(jī)直接訪問也支持!但是其他其他系統(tǒng)PC端不支持,嘗試了好多都不行,最后終于找到了一個(gè)支持m3u8格式H5播放
    2017-10-10
  • nginx中proxy_pass各種用法詳解

    nginx中proxy_pass各種用法詳解

    nginx中配置location代理轉(zhuǎn)發(fā)規(guī)則的時(shí)候不同寫法對(duì)應(yīng)不同轉(zhuǎn)發(fā)規(guī)則。本文就介紹幾種常見的匹配情況,感興趣的可以了解一下
    2021-11-11
  • 教你在容器中使用nginx搭建上傳下載的文件服務(wù)器

    教你在容器中使用nginx搭建上傳下載的文件服務(wù)器

    這篇文章主要介紹了容器中使用nginx搭建支持上傳下載的文件服務(wù)器,在這需要注意為了讓nginx支持文件上傳,需要下載并運(yùn)行帶有nginx-upload-module模塊的容器,需要的朋友可以參考下
    2022-05-05
  • Nginx中運(yùn)行PHP框架Laravel的配置文件分享

    Nginx中運(yùn)行PHP框架Laravel的配置文件分享

    這篇文章主要介紹了Nginx中運(yùn)行PHP框架Laravel的配置文件分享,本文直接給出配置示例,需要的朋友可以參考下
    2015-06-06
  • nginx slice模塊的使用和源碼分析小結(jié)

    nginx slice模塊的使用和源碼分析小結(jié)

    很多請(qǐng)求都會(huì)去訪問一個(gè)巨大的文件,這個(gè)時(shí)候slice模塊就有了用武之地,本文主要介紹了nginx slice模塊的使用和源碼分析,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • nginx平滑重啟和平滑升級(jí)的圖文教程

    nginx平滑重啟和平滑升級(jí)的圖文教程

    如果改變了Nginx的配置文件(nginx.conf),想重啟Nginx,可以發(fā)送系統(tǒng)信號(hào)給Nginx主進(jìn)程的方式來進(jìn)行,下面這篇文章主要給大家介紹了關(guān)于nginx平滑重啟和平滑升級(jí)的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Nginx Rewrite模塊應(yīng)用的幾種場(chǎng)景

    Nginx Rewrite模塊應(yīng)用的幾種場(chǎng)景

    這篇文章主要介紹了Nginx Rewrite模塊應(yīng)用的幾種場(chǎng)景,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Nginx 安裝筆記(含PHP支持、虛擬主機(jī)、反向代理負(fù)載均衡)

    Nginx 安裝筆記(含PHP支持、虛擬主機(jī)、反向代理負(fù)載均衡)

    Nginx安裝簡(jiǎn)記(含PHP支持、虛擬主機(jī)、反向代理負(fù)載均衡) Nginx,據(jù)說高性能和穩(wěn)定性比Apache還牛,并發(fā)連接處理能力強(qiáng),低系統(tǒng)資源消耗。目前已有250多萬web站點(diǎn)在使用
    2009-10-10
  • Nginx設(shè)置目錄的訪問權(quán)限實(shí)現(xiàn)訪問靜態(tài)資源

    Nginx設(shè)置目錄的訪問權(quán)限實(shí)現(xiàn)訪問靜態(tài)資源

    遇到Permission denied錯(cuò)誤,通常是Nginx用戶權(quán)限不足,本文就來介紹一下Nginx設(shè)置目錄的訪問權(quán)限實(shí)現(xiàn)訪問靜態(tài)資源
    2024-10-10

最新評(píng)論