nginx使用詳解--反向代理

什么是反向代理?

正向代理: 一般的訪問流程是客戶端直接向目標服務器發送請求并獲取內容,使用正向代理后,客戶端改為向代理服務器發送請求,并指定目標服務器(原始服務器),然后由代理服務器和原始服務器通信,轉交請求并獲得的內容,再返回給客戶端。正向代理隱藏了真實的客戶端,為客戶端收發請求,使真實客戶端對服務器不可見。

反向代理: 反向代理(Reverse Proxy)是一種服務器架構模式,它充當服務器和客戶端之間的中間層,將客戶端的請求轉發到多個后端服務器,并將響應返回給客戶端。在反向代理中,客戶端不直接與后端服務器通信,而是通過反向代理服務器與后端服務器進行通信,使真實服務器對客戶端不可見。

反向代理的工作原理?

客戶端發送請求到反向代理服務器。
反向代理服務器接收到請求后,根據配置規則或負載均衡算法選擇一個后端服務器。
反向代理服務器將請求轉發給所選的后端服務器。
后端服務器處理請求并生成響應。
反向代理服務器將后端服務器的響應返回給客戶端。

如何配置反向代理?

打開 Nginx 的配置文件,通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf在 http 塊中添加以下配置來配置反向代理:

server {listen 80;server_name your_domain.com;location / {proxy_pass http://backend_server;}
}

listen:指定 Nginx 監聽的端口。
server_name:指定服務器的域名或 IP 地址。
location /:指定要代理的 URL 路徑。
proxy_pass:指定反向代理的目標服務器地址。
在上面的配置中,將 your_domain.com 替換為你的域名或 IP 地址,將 http://backend_server 替換為實際的后端服務器地址。

重啟 Nginx:
完成配置后,保存文件并重新啟動 Nginx 服務,以使配置生效。在 Ubuntu 上,可以使用以下命令重啟 Nginx:

sudo service nginx restart

驗證反向代理:
確保你的反向代理已正確配置。訪問 your_domain.com 或配置的域名,Nginx 將會代理請求并將其轉發到指定的后端服務器。后端服務器的響應將通過 Nginx 返回給客戶端。

uwsgi_pass和proxy_pass的區別

uwsgi_pass和proxy_pass是Nginx配置中用于將請求轉發到不同類型后端服務器的指令,它們有以下區別:

uwsgi_pass:
uwsgi_pass用于將請求轉發給uwsgi服務器,通過uwsgi協議與后端uwsgi應用程序進行通信。uwsgi服務器是專門用于處理uwsgi協議的服務器,它能夠直接與uwsgi應用程序進行交互,提供更高效和定制化的通信方式。當使用uwsgi_pass指令時,Nginx會將請求直接傳遞給uwsgi服務器,而不會進行HTTP協議的解析和轉發。

proxy_pass:
proxy_pass用于將請求轉發給HTTP或HTTPS服務器,通過HTTP協議與后端應用程序進行通信。這個后端服務器可以是任何支持HTTP協議的服務器,如Nginx、Apache、Node.js等。當使用proxy_pass指令時,Nginx會充當反向代理服務器,接收客戶端的請求,并將其轉發給后端的HTTP服務器進行處理。

反向代理實例一
實現效果:使用 Nginx 反向代理,訪問 http://www.123.com 直接跳轉到 127.0.0.1:8080

注意:此處如果要想從http://www.123.com跳轉到本機指定的ip,需要修改本機的hosts文件。此處略過
配置代碼

server {listen       80;server_name  www.123.com;location / {root   html;index  index.html index.htm;proxy_pass  http://127.0.0.1:8080}
}

如上配置,我們監聽 80 端口,訪問域名為 http://www.123.com(不加端口號時默認為 80 端口),故訪問該域名時會跳轉到 127.0.0.1:8080 路徑上。

此處的意思為:nginx 反向代理服務監聽 192.168.17.129的80端口,如果有請求過來,則轉到proxy_pass配置的對應服務器上,僅此而已。

反向代理的作用?

負載均衡:反向代理可以將請求分發給多個后端服務器,平衡服務器負載,提高系統的性能和可靠性。它可以根據不同的算法(如輪詢、加權輪詢、最少連接數等)來選擇后端服務器,確保請求被合理地分配。

緩存加速:反向代理可以緩存靜態內容或頻繁請求的動態內容,減輕后端服務器的負載并加快響應速度。它可以在緩存中保存響應,并在后續請求中直接返回緩存的響應,而無需訪問后端服務器。

安全性和訪問控制:反向代理可以充當安全屏障,隱藏后端服務器的真實IP地址和架構細節,提供一定的安全性。它可以實施訪問控制、身份驗證和授權策略,保護后端服務器免受惡意請求和攻擊。

SSL加密和解密:反向代理可以承擔SSL終止(SSL Termination)的功能,將客戶端和后端服務器之間的SSL/TLS加密和解密處理在代理層進行,減輕后端服務器的計算負載。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/710824.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710824.shtml
英文地址,請注明出處:http://en.pswp.cn/news/710824.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在極狐GitLab 配置 SSL/https

本文作者 徐曉偉 說明 極狐GitLab https 使用的是 nginx 實現的本文使用的域名是IP 192.168.80.14(原因:如果使用域名,必須擁有這個域名的所有權,并增加解析才可以,要不然在 Docker 容器中,無法使用域名檢…

go并發模式之----使用時順序模式

常見模式之二:使用時順序模式 定義 顧名思義,起初goroutine不管是怎么個先后順序,等到要使用的時候,需要按照一定的順序來,也被稱為未來使用模式 使用場景 每個goroutine函數都比較獨立,不可通過參數循環…

DOM 獲取父子節點

DOM 是以樹狀結構排列的,所以父子關系是相對的,當li為我們的目標節點的時候,ul為其父節點,其他li為它的兄弟節點,li里面包含的標簽為子節點,以此類推。 那我們如何找父節點? 元素.parentNode&am…

libigl 網格質量矩陣

文章目錄 一、簡介二、應用三、實現效果參考資料一、簡介 在 libigl 中,igl::massmatrix 是一個用于計算給定三角網格的質量矩陣的函數。質量矩陣在有限元分析和其他模擬技術中非常有用,它通常用于描述網格中各個節點的質量或者用于計算模擬過程中的慣性效應。 igl::massmatr…

分布式系統如何做數據對賬?

前言 在分布式系統中,雖然我們會使用各種分布式事務的方案,來保證各個系統之間的一致性。但是,很多時候往往事與愿違。 尤其是現在很多公司都采用最終一致性的方案,而所謂最終一致性,無論是本地消息表、事務消息、還…

藍橋杯:數組分割(Java)

目錄 問題描述輸入格式輸出格式代碼實現 問題描述 小藍有一個長度為N的數組A[A0,A1,… AN-1]。現在小藍想要從A對應的數組下標所構成的集合Ⅰ0,1,2,…,N -1中找出一個子集R1,那么R1在Ⅰ中的補集為R2。記S1∈∑Ar,S2∈∑Ar,我們要求S1和S2均為…

node 之 npm

1.什么是包 node.js中的第三方模塊又叫做包 就像電腦和計算機指的是相同的東西,第三方模塊和包指的是同一個概念,只不過叫法不同 2.包的來源 不同于 Node.js 中的內置模塊與自定義模塊,包是由第三方個人或團隊開發出來的,免費供所…

【計算機網絡——應用層】http協議

文章目錄 1. http協議1.1 http協議簡介1.2 url組成1.3 urlencode與urldecode 2. http協議的格式2.1 http協議的格式2.2 一些細節問題 3. http的方法、狀態碼和常見響應報頭3.1 http請求方法3.2 http狀態碼3.3 http常見的響應報頭屬性 4. 一個非常簡單的http協議服務端5. http長…

【X806開發板試用】文章一 ubuntu開發環境搭建

一、環境配置 官方鏈接: 環境配置 1.安裝必要的庫和軟件 sudo apt-get install build-essential gcc g make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-b…

pix2pix-zero

pix2pix-zero:零樣本圖像到圖像轉換 論文介紹 Zero-shot Image-to-Image Translation 關注微信公眾號: DeepGoAI 項目地址:https://github.com/pix2pixzero/pix2pix-zero 論文地址:https://arxiv.org/abs/2302.03027 本文介紹了一種名為…

Golang 函數中 defer 和 return 的調用順序

先來看一段代碼: package mainimport "fmt"func f() (ret int) {defer func() {ret}()return 1 } func main() {fmt.Println(f()) }上面這段代碼的輸出是2,不是1 原因在于: 1)ret 是在執行 return 1 語句后發生的 2&…

基于SpringBoot多模塊項目引入其他模塊時@Autowired無法注入

基于SpringBoot多模塊項目引入其他模塊時Autowired無法注入 一、問題描述1、解決方案 一、問題描述 啟動Spring Boot項目時報 Could not autowire. No beans of ‘xxxxxxxx’ type found. 沒有找到bean的實例,即spring沒有實例化對象,也就無法根據配置文…

【LeetCode-中等】209.長度最小的子數組-雙指針/滑動窗口

力扣題目鏈接 1. 暴力解法 這道題的暴力解法是兩層嵌套for循環,第一層循環從 i 0 開始遍歷至數組末尾,第二層循環從 j i 開始遍歷至找到總和大于等于 target 的連續子數組,并將該連續子數組的長度與之前找到的子數組長度相比較&#xff0…

傳輸層兩大戰將TCP、UDP的定位

傳輸層 定義一些傳輸數據的協議和端口,傳輸協議同時進行流量控制,根據接收方的數據吞入熟讀,規定適當的發送速率,解決傳輸效率及能力問題 什么是TCP TCP/IP即傳輸控制/網絡協議,是面向連接的協議,發送數…

什么是IP公網?

IP公網是指互聯網上可以公開訪問的IP地址。它是經過互聯網服務提供商(ISP)向用戶提供的公共網絡IP地址。與之相對的是內網IP地址,內網IP地址一般是由路由器或交換機分配給連接在局域網中的設備使用。 IP公網的作用非常廣泛,可以應…

C#解析JSON

https://blog.csdn.net/weixin_43046974/article/details/131449900 C#解析JSON 1. JSON定義2. JSON一般構成及解析方法3. 解析舉例子 1. JSON對象解析,只包含一層對象{}2. 嵌套JSON對象解析,包含多層對象{}3. JSON數組解析1(數組循環遍歷&…

Web APIs知識點講解(階段二)

DOM-事件基礎 一.事件 1.事件 目標:能夠給 DOM元素添加事件監聽 事件:事件是在編程時系統內發生的動作或者發生的事情,比如用戶在網頁上單擊一個按鈕 事件監聽:就是讓程序檢測是否有事件產生,一旦有事件觸發,就立即調用一個函…

http工具類

public class HttpRequstUtil {/*** http請求方法** param message 查詢條件* param url 查詢地址* param token 身份驗證token* param socketTimeout socket 響應時間* param connectTimeout 超時時間* return 返回字符串*/Deprecatedpublic stat…

金仕達與 DolphinDB 建立深度合作,共筑 FICC 科技創新新篇章

從“關起門做交易”到“打開門做服務”,國內 FICC 業務正經歷從自營到市場化服務的轉變,借助數據分析、算法交易等技術的快速發展,交易團隊能夠更加主動地發現市場需求,為不同客群提供更好的做市業務,FICC 交易電子化已…

打造智能汽車微服務系統平臺:架構的設計與實現

隨著智能汽車技術的飛速發展,微服務架構在汽車行業中的應用越來越廣泛。采用微服務架構可以使汽車系統更加靈活、可擴展,并且有利于快速推出新功能和服務。本文將從設計原則、關鍵技術、數據安全等方面,介紹如何搭建智能汽車微服務系統平臺架…