Openresty 反向代理 api服務

什麼是反向代理

反向代理(Reverse Proxy)方式是指用代理服務器來接受 internet 上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給 internet 上請求鏈接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。nginx

舉個例子,一個用戶訪問 www.example.com/readme,可是 www.example.com 上並不存在 readme 頁面,它是偷偷從另一臺服務器上取回來,而後做爲本身的內容返回給用戶。可是用戶並不知情這個過程。對用戶來講,就像是直接從 www.example.com 獲取 readme 頁面同樣。這裏所提到的 www.example.com 這個域名對應的服務器就設置了反向代理功能。web

反向代理服務器,對於客戶端而言它就像是原始服務器,而且客戶端不須要進行任何特別的設置。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接着反向代理將判斷向何處(原始服務器)轉交請求,並將得到的內容返回給客戶端,就像這些內容本來就是它本身的同樣。以下圖所示:django

反向代理典型應用場景

反向代理的典型用途是將防火牆後面的服務器提供給 Internet 用戶訪問,增強安全防禦。反向代理還能夠爲後端的多臺服務器提供負載均衡,或爲後端較慢的服務器提供 緩衝 服務。另外,反向代理還能夠啓用高級 URL 策略和管理技術,從而使處於不一樣 web 服務器系統的 web 頁面同時存在於同一個 URL 空間下。後端

Nginx 的其中一個用途是作 HTTP 反向代理,下面簡單介紹 Nginx 做爲反向代理服務器的方法。api

使用nginx反向代理django的api請求安全

配置文件nginx.conf服務器

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {

    server_tokens off;
    
    # 配置反向代理,將訪問 / 的url路徑,反向請求至http://192.168.43.128:8000
    server {
        listen 8080;
        location / {
            proxy_pass  http://192.168.43.128:8000;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
}
複製代碼

測試以下:網絡

  • 首先直接訪問django的api服務,以下:

能夠看到請求8000端口號正常。負載均衡

  • 如今訪問nginx的8080端口服務,查看是否訪問正常,以下:

能夠看到訪問是正常返回結果的。說明nginx反向代理成功。測試

相關文章
相關標籤/搜索