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

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

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

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

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

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

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

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

原因

本質上是因為:“其他網(wǎng)站”的服務程序具有請求頭校驗。

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

nginx服務器的地址是https://server1.domin:1111

生產服務器的地址是http://server2.domin:2222

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

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

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

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

而我們的nginx已經把請求頭改成了原始信息,自然不能通過他們的驗證,所以就會被強制重定向了。

如圖,它把我的38004端口的請求重定向到了默認的443,說明對方服務器有地址校驗,而且重定向只改變了端口。

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

解決

我們先來看看通常使用的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/;
    }
}

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

那么我們怎么改呢?

我們要讓對方服務器認為,nginx發(fā)過去的請求不是代理過去的,而是直接發(fā)過去的。

再換種方式說,此時nginx的作用不再是反向代理,而是正向代理,目的是隱藏真正的請求信息,讓對方服

務器認為就是nginx直接請求的對方服務器。

所以我們要把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; // 對方服務器的域名
        proxy_set_header X-Real-IP 123.123.123.123; // 對方服務器的真實地址,從控制臺中找到
        proxy_set_header X-Forwarded-For $123.123.123.123:80;
        proxy_set_header X-Forwarded-Host server2.domin; // 對方服務器的域名
        proxy_set_header X-Forwarded-Port 80; // 對方服務器的端口
        proxy_pass http://server2.domin:2222/;
    }
}

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

總結

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

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

就可以通過對方服務器的host驗證了。

時間倉促,有些地方可能說的不準,但目前能用,如有錯誤歡迎指正。

以上就是nginx反向代理后無限重定向的問題解決方法的詳細內容,更多關于nginx反向代理重定向的資料請關注腳本之家其它相關文章!

相關文章

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

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

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

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

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

    nginx中proxy_pass各種用法詳解

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

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

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

    Nginx中運行PHP框架Laravel的配置文件分享

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

    nginx slice模塊的使用和源碼分析小結

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

    nginx平滑重啟和平滑升級的圖文教程

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

    Nginx Rewrite模塊應用的幾種場景

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

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

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

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

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

最新評論