Nginx配置反向代理服務(wù)器實(shí)現(xiàn)在https網(wǎng)站中請求http資源
一、前言
Nginx反向代理是一種將客戶端請求轉(zhuǎn)發(fā)到后端服務(wù)器的技術(shù),主要用于負(fù)載均衡、提高安全性和提升性能。與正向代理不同,反向代理隱藏了后端服務(wù)器的真實(shí)地址,客戶端與之交互時(shí)只知道反向代理服務(wù)器的地址。
二、Nginx反向代理的工作原理
當(dāng)客戶端發(fā)送請求到反向代理服務(wù)器時(shí),Nginx 會(huì)接收這些請求,并根據(jù)配置將請求轉(zhuǎn)發(fā)到后端的真實(shí)服務(wù)器上。Nginx 可以將多個(gè)請求分發(fā)到多個(gè)后端服務(wù)器,從而實(shí)現(xiàn)負(fù)載均衡,提高系統(tǒng)的并發(fā)處理能力和可用性。常見的負(fù)載均衡算法有輪詢、IP 哈希、最少連接等。
三、Nginx反向代理的主要功能
- 負(fù)載均衡:
Nginx可以通過反向代理實(shí)現(xiàn)負(fù)載均衡,將請求分發(fā)到多個(gè)后端服務(wù)器上,從而提高系統(tǒng)的并發(fā)處理能力和可用性。 - 緩存加速:
Nginx可以緩存靜態(tài)資源或動(dòng)態(tài)頁面,減少后端服務(wù)器的負(fù)載,提高響應(yīng)速度。通過設(shè)置緩存時(shí)間、緩存規(guī)則等參數(shù),可以靈活地控制緩存策略。 - SSL終端:
Nginx可以作為SSL終端,接收HTTPS請求并進(jìn)行SSL/TLS解密,然后將解密后的請求轉(zhuǎn)發(fā)給后端服務(wù)器,減輕后端服務(wù)器的負(fù)擔(dān),提高安全性和性能。 - 安全過濾:
Nginx可以通過反向代理實(shí)現(xiàn)安全過濾功能,例如防止惡意請求、DDoS攻擊、SQL注入等。通過配置訪問控制規(guī)則、限制請求頻率等方式,可以提高系統(tǒng)的安全性。
四、Nginx反向代理的配置和使用場景
Nginx 的反向代理功能通過配置文件進(jìn)行配置,配置文件包含了全局配置、http配置和 server 配置等部分,可以設(shè)置監(jiān)聽端口、代理規(guī)則、緩存配置、負(fù)載均衡策略等。Nginx 具有高性能的特點(diǎn),采用異步非阻塞的事件驅(qū)動(dòng)模型,可以處理大量并發(fā)連接,同時(shí)內(nèi)存消耗較低,適合在資源有限的環(huán)境中使用。
五、實(shí)戰(zhàn)配置
網(wǎng)站使用 nginx 作為服務(wù)器,協(xié)議從 http 升級為 https 的注意事項(xiàng)。
5.1 首先,修改寶塔面板配置
選擇配置文件,http 請求重定向?yàn)?nbsp;https 。所有 80 端口請求都重定向?yàn)?nbsp;https請求。
# server代表的是nginx其中的一個(gè)服務(wù)器
server
{
listen 80; # listen表示監(jiān)聽端口號(hào)80 (http)
listen 443 ssl http2; # 表示監(jiān)聽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/ {
# 通過代理,訪問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;
}
# 代理音樂服務(wù)器api
# /musicapi/,必須加上后面的/,不然代理服務(wù)不成功
location /musicapi/ {
# 訪問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)站升級到 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/ 服務(wù)器。
5.4 最后還要在原來的index.html文件里添加
# 把http鏈接升級為https <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
5.5 或者可以操作服務(wù)端的話,也可以在nginx配置里添加
server
{
listen 80;
listen 443 ssl http2;
......
#升級可以升級為https的連接,兼容http
add_header Content-Security-Policy "upgrade-insecure-requests;connect-src *";
}
以上就是Nginx配置反向代理服務(wù)器實(shí)現(xiàn)在https網(wǎng)站中請求http資源的詳細(xì)內(nèi)容,更多關(guān)于Nginx配置反向代理服務(wù)器的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nginx代理轉(zhuǎn)發(fā)報(bào)錯(cuò)405?Method?Not?Allowed解決
這篇文章主要為大家介紹了解決nginx代理轉(zhuǎn)發(fā)報(bào)錯(cuò)405?Method?Not?Allowed解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Nginx指令add_header和proxy_set_header的區(qū)別及說明
這篇文章主要介紹了Nginx指令add_header和proxy_set_header的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析
這篇文章主要為大家介紹了Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
mac安裝nginx且配置vue/springboot項(xiàng)目過程(本地/服務(wù)器)
文章涵蓋Mac和Linux安裝Nginx的步驟,包括配置路徑、自啟動(dòng)、端口修改、前端部署及權(quán)限設(shè)置,解決常見問題以確保服務(wù)正常運(yùn)行2025-07-07
nginx結(jié)合keepalived實(shí)現(xiàn)高可用的完整步驟
這篇文章主要給大家介紹了關(guān)于nginx結(jié)合keepalived實(shí)現(xiàn)高可用的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用nginx具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Nginx 反向代理與負(fù)載均衡:一臺(tái)服務(wù)器扛不住的解決方案
文章主要介紹了如何使用Nginx解決單臺(tái)服務(wù)器負(fù)載過高的問題,通過Nginx的反向代理和負(fù)載均衡功能,可以將請求分散到多臺(tái)Tomcat服務(wù)器上,同時(shí)處理靜態(tài)資源和動(dòng)態(tài)請求,并配置Gzip壓縮、HTTPS、限流等以提高效率和安全性,文中還提供了詳細(xì)的配置步驟和示例代碼2026-04-04

