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

    nginx代理訪問外網(wǎng)(nginx代理其他網(wǎng)站)

    發(fā)布時間:2023-03-12 23:23:17     稿源: 創(chuàng)意嶺    閱讀: 84        問大家

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于nginx代理訪問外網(wǎng)的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

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

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

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

    本文目錄:

    nginx代理訪問外網(wǎng)(nginx代理其他網(wǎng)站)

    一、nginx代理常用配置

    1. 最簡反向代理配置

    在http節(jié)點下,使用upstream配置服務地址,使用server的location配置代理映射。

    upstream my_server {

    server 10.0.0.2:8080;

    keepalive 2000;

    }

    server {

    listen 80;

    server_name 10.0.0.1;

    client_max_body_size 1024M;

    location /my/ {

    proxy_pass http://my_server/;

    proxy_set_header Host $host:$server_port;

    }

    }

    通過該配置,訪問nginx地址http://10.0.0.1:80/my的請求會被轉發(fā)到my_server服務地址http://10.0.0.2:8080/。

    需要注意的是,如果按照如下配置:

    upstream my_server {

    server 10.0.0.2:8080;

    keepalive 2000;

    }

    server {

    listen 80;

    server_name 10.0.0.1;

    client_max_body_size 1024M;

    location /my/ {

    proxy_pass http://my_server;

    proxy_set_header Host $host:$server_port;

    }

    }

    那么,訪問nginx地址http://10.0.0.1:80/my的請求會被轉發(fā)到my_server服務地址http://10.0.0.2:8080/my。這是因為proxy_pass參數(shù)中如果不包含url的路徑,則會將location的pattern識別的路徑作為絕對路徑。

    2. 重定向報文代理

    即便配置了nginx代理,當服務返回重定向報文時(http code為301或302),會將重定向的目標url地址放入http response報文的header的location字段內(nèi)。用戶瀏覽器收到重定向報文時,會解析出該字段并作跳轉。此時新的請求報文將直接發(fā)送給服務地址,而非nginx地址。為了能讓nginx攔截此類請求,必須修改重定向報文的location信息。

    location /my/ {

    proxy_pass http://my_server;

    proxy_set_header Host $host:$server_port;

    proxy_redirect / /my/;

    }

    使用proxy_redirect可以修改重定向報文的location字段,例子中會將所有的根路徑下的url代理到nginx的/my/路徑下返回給用戶。比如服務返回的重定向報文的location原始值為/login,那么經(jīng)過nginx代理后,用戶收到的報文的location字段為/my/login。此時,瀏覽器將會跳轉到nginx的/my/login地址進行訪問。

    需要注意的是,服務返回的重定向報文的location字段有時會填寫絕對路徑(包含服務的ip/域名和端口),有時候會填寫相對路徑,此時需要根據(jù)實際情況進行甄別。

    location /my/ {

    proxy_pass http://my_server;

    proxy_set_header Host $host:$server_port;

    proxy_redirect http://my_server/ http://$host:$server_port/my/;

    }

    上述配置便是將my_server服務的根路徑下的所有路徑代理到nginx地址的/my/路徑下。當nginx配置只有一個server時,http://$host:$server_port前綴可以省略。

    3. 報文數(shù)據(jù)替換

    使用nginx代理最牛(dan)逼(sui)的情況就是http響應報文內(nèi)寫死了服務地址或web絕對路徑。寫死服務地址的情況比較少見,但也偶爾存在。最棘手的是寫死了web絕對路徑,尤其是絕對路徑都沒有公共前綴。舉個例子來說:

    一般的web頁面會包含如下類似路徑:

    /public:用于靜態(tài)頁面資源,如js腳本/public/js,樣式表/public/css,圖片/public/img等。

    /static:和/public類似。

    /api:用于后臺服務API接口。

    /login:用于登錄驗證。

    其他。

    對于這樣的服務,可能的代理配置如下:

    location /my/ {

    proxy_pass http://my_server/;

    proxy_set_header Host $host:$server_port;

    proxy_redirect / /my/;

    }

    location /login/ {

    proxy_pass http://my_server/public;

    proxy_set_header Host $host:$server_port;

    }

    location /public/ {

    proxy_pass http://my_server/public;

    proxy_set_header Host $host:$server_port;

    }

    location /api/ {

    proxy_pass http://my_server/api;

    proxy_set_header Host $host:$server_port;

    }

    由于web頁面或靜態(tài)資源內(nèi)寫死了類似的絕對路徑,那么對于用戶來說,通過頁面內(nèi)的鏈接進行跳轉時,都會請求到nginx服務對應的路徑上。一旦存在另一個服務也包含類似的路徑,也需要nginx進行代理,那么矛盾就出現(xiàn)了:訪問nginx的同一個路徑下的請求究竟轉發(fā)給哪一個服務?

    要解決這個問題,必須在用戶收到報文前,將報文的數(shù)據(jù)中包含的絕對路徑都添加統(tǒng)一的前綴,如/my/public,/my/api,/my/login,這樣nginx代理配置則可以簡化為:

    location /my/ {

    proxy_pass http://my_server/;

    proxy_set_header Host $host:$server_port;

    proxy_redirect / /my/;

    }

    location /other/ {

    proxy_pass http://other_server/;

    proxy_set_header Host $host:$server_port;

    proxy_redirect / /other/;

    }

    nginx的ngx_http_sub_module模塊提供了類似的報文數(shù)據(jù)替換功能,該模塊默認不會安裝,需要在編譯nginx時添加--with-http_sub_module參數(shù),或者直接下載nginx的rpm包。

    使用sub_filter對數(shù)據(jù)包進行替換的語法如下:

    location /my/ {

    proxy_pass http://my_server/;

    proxy_set_header Host $host:$server_port;

    sub_filter 'href="/' 'href="/my/';

    sub_filter 'src="/' 'src="/my/';

    sub_filter_types text/html;

    sub_filter_once off;

    }

    上述配置會將/my/下的所有響應報文內(nèi)容的href="/替換為href="/my,以及src="/替換為src="/my,即為所有的絕對路徑添加公共前綴。

    注意,如果需要配置多個sub_filter,必須保證nginx是1.9.4版本之上的。

    二、Nginx 能正向代理 https get 請求嗎

    可以根據(jù)域名設置正向代理,這樣的話無論post,get都可以

    三、怎么訪問nginx代理的服務器

    1.1

    反向代理初印象

    反向代理(Reverse

    Proxy)方式是指以代理服務器來接受Internet上的連接請求,然后將請求轉發(fā)給內(nèi)部網(wǎng)絡上的服務器,并將從服務器上得到的結果返回給Internet上請求連接的客戶端,此時代理服務器對外就表現(xiàn)為一個服務器。

    從上圖可以看出:反向代理服務器位于網(wǎng)站機房,代理網(wǎng)站W(wǎng)eb服務器接收Http請求,對請求進行轉發(fā)。

    1.2

    反向代理的作用

    ①保護網(wǎng)站安全:任何來自Internet的請求都必須先經(jīng)過代理服務器;

    ②通過配置緩存功能加速Web請求:可以緩存真實Web服務器上的某些靜態(tài)資源,減輕真實Web服務器的負載壓力;

    ③實現(xiàn)負載均衡:充當負載均衡服務器均衡地分發(fā)請求,平衡集群中各個服務器的負載壓力;

    四、為什么nginx配置的https 內(nèi)網(wǎng)可以訪問外網(wǎng)訪問不了

    1、首先檢查的配置是否正確,443端口是否打開。

    2、檢查的防火墻設置

    3、安裝上傳的nginx ssl證書配置指南重新部署一遍。

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


    推薦閱讀:

    bing最新版下載(bing安卓版下載)

    5.22樂居Morning Call丨本周末6盤推新 仙林湖速度盤真的來了

    rectangle諧音記憶

    網(wǎng)絡營銷難不(網(wǎng)絡營銷難不難學)

    觀城景觀設計培訓(觀景設計有限公司)