Nginx配置反向代理服務器實現(xiàn)在https網(wǎng)站中請求http資源
一、前言
Nginx
反向代理是一種將客戶端請求轉(zhuǎn)發(fā)到后端服務器的技術,主要用于負載均衡、提高安全性和提升性能。與正向代理不同,反向代理隱藏了后端服務器的真實地址,客戶端與之交互時只知道反向代理服務器的地址。
二、Nginx反向代理的工作原理
當客戶端發(fā)送請求到反向代理服務器時,Nginx 會接收這些請求,并根據(jù)配置將請求轉(zhuǎn)發(fā)到后端的真實服務器上。Nginx 可以將多個請求分發(fā)到多個后端服務器,從而實現(xiàn)負載均衡,提高系統(tǒng)的并發(fā)處理能力和可用性。常見的負載均衡算法有輪詢、IP 哈希、最少連接等。
三、Nginx反向代理的主要功能
- 負載均衡:
Nginx
可以通過反向代理實現(xiàn)負載均衡,將請求分發(fā)到多個后端服務器上,從而提高系統(tǒng)的并發(fā)處理能力和可用性。 - 緩存加速:
Nginx
可以緩存靜態(tài)資源或動態(tài)頁面,減少后端服務器的負載,提高響應速度。通過設置緩存時間、緩存規(guī)則等參數(shù),可以靈活地控制緩存策略。 - SSL終端:
Nginx
可以作為SSL
終端,接收HTTPS
請求并進行SSL/TLS
解密,然后將解密后的請求轉(zhuǎn)發(fā)給后端服務器,減輕后端服務器的負擔,提高安全性和性能。 - 安全過濾:
Nginx
可以通過反向代理實現(xiàn)安全過濾功能,例如防止惡意請求、DDoS
攻擊、SQL
注入等。通過配置訪問控制規(guī)則、限制請求頻率等方式,可以提高系統(tǒng)的安全性。
四、Nginx反向代理的配置和使用場景
Nginx
的反向代理功能通過配置文件進行配置,配置文件包含了全局配置、http配置和 server
配置等部分,可以設置監(jiān)聽端口、代理規(guī)則、緩存配置、負載均衡策略等。Nginx
具有高性能的特點,采用異步非阻塞的事件驅(qū)動模型,可以處理大量并發(fā)連接,同時內(nèi)存消耗較低,適合在資源有限的環(huán)境中使用。
五、實戰(zhàn)配置
網(wǎng)站使用 nginx
作為服務器,協(xié)議從 http
升級為 https
的注意事項。
5.1 首先,修改寶塔面板配置
選擇配置文件,http
請求重定向為 https
。所有 80
端口請求都重定向為 https
請求。
# server代表的是nginx其中的一個服務器 server { listen 80; # listen表示監(jiān)聽端口號80 (http) listen 443 ssl http2; # 表示監(jiān)聽443 端口號(https) server_name www.abc.com abc.com ip地址; # server_name表示服務器名稱,現(xiàn)在同時匹配3個 index index.php index.html index.htm default.php default.htm default.html; # 匹配/www/wwwroot/abc/index.html root /www/wwwroot/abc; # abc表示路徑,網(wǎng)站的起始位置為/www/wwwroot/abc #HTTP_TO_HTTPS_START if ($server_port !~ 443){ # 端口號不等于443,則重寫url到https://當前主機/后面所有路徑,并永久重定向(permanent) rewrite ^(/.*)$ https://$host$1 permanent; }
5.2 接著配置代理服務器
# 代理serve圖片服務器api location /api/ { # 通過代理,訪問https://ip|域名/api/...時,代理到http://你的ip或域名:3004/api/... proxy_pass http://你的ip或域名:3004; # 注意`http://你的ip或域名:3004`末尾不添加`/`,這樣的話`/api/`將會添加到3004后面 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; proxy_set_header X-Forwarded-Proto $scheme; } # 代理音樂服務器api # /musicapi/,必須加上后面的/,不然代理服務不成功 location /musicapi/ { # 訪問https://你的ip或域名/musicapi/..., # 代理到http://你的ip或域名:3005/...,不包括/musicapi proxy_pass http://你的ip或域名:3005/; # 這里末尾添加了`/`,將不會添加`/musicapi/`在端口號后面 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; proxy_set_header X-Forwarded-Proto $scheme; }
5.3 完成上面所有配置后
http
網(wǎng)站升級到 https
網(wǎng)站,瀏覽器可正常訪問網(wǎng)站,網(wǎng)站請求的 api
接口,需要從 http://ip| 域名 :3005/lyric?id=32507038
修改為 http(s)://ip|域名/musicapi/lyric?id=32507038
。這里的流程就是,把原本請求的 :3005
用 /musicapi
替換掉,然后瀏覽器發(fā)出并重定向成 https
開頭的請求,接著 nginx
發(fā)現(xiàn)你的請求中帶有 /musicapi
,就把你的請求轉(zhuǎn)發(fā)給匹配上的 http://
你的ip
或域名 :3005/
服務器。
5.4 最后還要在原來的index.html文件里添加
# 把http鏈接升級為https <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
5.5 或者可以操作服務端的話,也可以在nginx配置里添加
server { listen 80; listen 443 ssl http2; ...... #升級可以升級為https的連接,兼容http add_header Content-Security-Policy "upgrade-insecure-requests;connect-src *"; }
以上就是Nginx配置反向代理服務器實現(xiàn)在https網(wǎng)站中請求http資源的詳細內(nèi)容,更多關于Nginx配置反向代理服務器的資料請關注腳本之家其它相關文章!
相關文章
nginx實現(xiàn)數(shù)據(jù)庫端口轉(zhuǎn)發(fā)
本文主要介紹了nginx實現(xiàn)數(shù)據(jù)庫端口轉(zhuǎn)發(fā),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置
這篇文章主要介紹了詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置的相關資料,這里提供實例幫助大家,學習理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08Nginx配置txt、pdf、doc、xls等文件直接下載的方法
這篇文章主要介紹了Nginx配置txt、pdf、doc、xls等文件直接下載的方法,配置方法很簡單,本文直接給出配置示例,需要的朋友可以參考下2015-04-04基于Nginx實現(xiàn)一個灰度上線系統(tǒng)的示例代碼
本文主要介紹了基于Nginx實現(xiàn)一個灰度上線系統(tǒng)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07