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