Nginx反向代理實踐

概述

Nginx反向代理(Reverse Proxy):反向代理是指服務器根據客戶端的請求,從其關係的一組或多組後端服務器(如Web服務器)上獲取資源,然後再將這些資源返回給客戶端,客戶端只會得知反向代理的IP地址,而不知道在代理服務器後面的服務器簇的存在。

反向代理的作用

  • 對客戶端隱藏服務器(集羣)的IP地址
  • 安全:作爲應用層防火牆,爲網站提供對基於Web的攻擊行爲(例如DoS/DDoS的防護,更容易排查惡意軟件等
  • 爲後端服務器(集羣)統一提供加密和SSL加速(如SSL終端代理)
  • 負載均衡,若服務器集羣中有負荷較高者,反向代理通過URL重寫,根據連線請求從負荷較低者獲取與所需相同的資源或備援
  • 對於靜態內容及短時間內有大量訪問請求的動態內容提供緩存服務
  • 對一些內容進行壓縮,以節約帶寬或爲網絡帶寬不佳的網絡提供服務
  • 減速上傳
  • 提供HTTP訪問認證

實踐Nginx反向代理內網穿透8081端口

  • 目的:隱藏8081端口,通過訪問80端口實現訪問8081端口

實現步驟

  • 我們配置api 在8081端口,並且成功部署,此時8081對外開放,所以可訪問
  • 以Ubuntu環境爲例
$ cd /etc/nginx/
$ vim nginx.conf
  • Nginx http節點下 配置8081端口反向代理如下
 server {
        listen 80 default_server;
        listen [::]:80 default_server;
        location  /api/ {
                        proxy_pass http://127.0.0.1:8081;
                }

                location  /apidocs/ {  
                        proxy_pass http://localhost:8081/api/;
                        index swagger-ui.html;
                        error_page 404 http://localhost:8081/api/swagger-ui.html;
                }
         }
  • 配置完成後重啓Nginx服務
$ service nginx restart
  • 至此,我們實現了nginx反向代理8081端口,通過訪問80端口,代理到8081端口的目的
  • 重點理解Ngnix location&proxy_pass字段規則

實現方式二配置upstream

  • 在http節點下,加入upstream節點
upstream demo { 
   server ip:8080; 
   server ip:8081; 
}
  • 將server節點下的location節點中的proxy_pass配置爲:http:// + upstream名稱
location / { 
      proxy_pass http://demo; 
}

Nginx配置https支持

 ##
        # add cnn SSL Settings
        ##
        server{
                listen 443;
                server_name demo.com;
                ssl on;
                ssl_certificate /etc/nginx/cert/test.pem;
                ssl_certificate_key /etc/nginx/cert/test.key;
                ssl_session_timeout 5m;
                location / {
                                            #根域名或者ip
                                proxy_pass http://demo.com;
                        }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章