nginx反向代理失效前端無法獲取后端的數(shù)據(jù)解決辦法
原理:
正向代理:正向代理代理的是客戶端。比如我們無法直接在瀏覽器上訪問YouTube,但我們開個(gè)加速器,就可以訪問了,此時(shí)這個(gè)加速器就是正向代理服務(wù)器。這個(gè)加速器能訪問YouTube,加速器接收到我們的請(qǐng)求后,把請(qǐng)求轉(zhuǎn)發(fā)到Y(jié)ouTube,YouTube返回資源給加速器,加速器再返回資源給我們,這就是正向代理。
正向代理最大的特點(diǎn)是服務(wù)器只清楚請(qǐng)求來自哪個(gè)代理服務(wù)器,而不清楚來自哪個(gè)具體的客戶端,正向代理模式屏蔽或者隱藏了真實(shí)客戶端信息。
反向代理:反向代理代理的是服務(wù)器。還是上面的例子,YouTube的每日訪問量很大,如果只用一臺(tái)服務(wù)器處理所有請(qǐng)求很容易崩潰,于是會(huì)采用分布式部署,有多臺(tái)服務(wù)器處理請(qǐng)求。客戶發(fā)送請(qǐng)求,DNS服務(wù)器把域名解析到nginx服務(wù)器上,nginx服務(wù)器按照一定規(guī)則把請(qǐng)求分發(fā)到不同的服務(wù)器上進(jìn)行處理,這時(shí)nginx代理的就是YouTube服務(wù)器。
nginx隱藏了服務(wù)器的信息。
問題:
nginx.conf配置文件內(nèi)容:
server { listen 8092; #這里把8092改成你的服務(wù)在docker容器內(nèi)運(yùn)行的端口號(hào) server_name localhost; #這里把localhost改成你的服務(wù)器的IP地址 location /admin/ { #這里的admin是重點(diǎn),看下面分析 proxy_pass http://localhost:56000; #這里把localhost改成后端服務(wù)器的IP地址,把56000改成后端服務(wù)的端口號(hào) } location / { root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
注意:
1、location / 的內(nèi)容要放在location /admin/ 內(nèi)容的后面,這是配置優(yōu)先級(jí)的問題,location /是通用配置,location /admin/是精準(zhǔn)配置,精準(zhǔn)配置的優(yōu)先級(jí)要高于通用配置,如果通用配置放在精準(zhǔn)配置前面,有可能發(fā)生請(qǐng)求被通用配置匹配,執(zhí)行不到后面的精準(zhǔn)配置,會(huì)發(fā)生代理無效前后端連接不上的問題。
2、精準(zhǔn)配置中的路徑問題。首先,檢查前端代碼中有無進(jìn)行下面這段配置的行為,如果有,那上面配置文件中的admin就要改成設(shè)置的api(或是你設(shè)置的其他值);如果前端中沒有進(jìn)行這樣的配置,就檢查后端所有的接口路徑是否都有統(tǒng)一的前綴,如果有,就把上面的admin改成你統(tǒng)一的前綴,如果沒有,就在手動(dòng)在前端配置前綴或者在后端接口上配置前綴。不然,無法進(jìn)行匹配,請(qǐng)求就無法轉(zhuǎn)發(fā)到后端接口,前后端就連接不上。
// 創(chuàng)建axios實(shí)例 const service = axios.create({ baseURL: "/api", // 我們配置的代理路徑,得和等下nginx配置的后端服務(wù)路徑匹配 // baseURL: "process.env.BASE_URL", timeout: 60 * 1000 // 請(qǐng)求超時(shí)時(shí)間 })
附:檢查nginx的錯(cuò)誤日志,基本常見的有以下幾種原因造成的
1.反向代理會(huì)根據(jù)轉(zhuǎn)發(fā)數(shù)據(jù)大小,若過大會(huì)自動(dòng)使用upstream
2.代理的時(shí)候若不想請(qǐng)求頭發(fā)生變化可以做如下設(shè)置
proxy_set_header Host $host:$server_port;
$host 就是server_name
$server_port 就是server中配置的端口
3.運(yùn)行nginx的用戶沒有權(quán)限
可修改nginx.conf的執(zhí)行用戶為root,或是賦予當(dāng)前執(zhí)行用戶相應(yīng)權(quán)限。
總結(jié)
到此這篇關(guān)于nginx反向代理失效前端無法獲取后端的數(shù)據(jù)解決的文章就介紹到這了,更多相關(guān)nginx反向代理失效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CentOS 7.0下nginx實(shí)現(xiàn)每天定時(shí)分割日志
大家都知道Nginx產(chǎn)生的日志都是存在一個(gè)文件,隨著網(wǎng)站運(yùn)行時(shí)間越長,日志文件的大小也在不斷增長,所以這個(gè)時(shí)候就需要實(shí)現(xiàn)定時(shí)分割,這篇文章主要介紹了在CentOS 7.0下nginx實(shí)現(xiàn)每天定時(shí)分割日志的相關(guān)資料,需要的朋友可以參考下。2017-04-04配置nginx保證frps服務(wù)器與web共用80端口的方法
這篇文章主要介紹了frps服務(wù)端與nginx可共用80端口的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06Nginx隱藏server頭信息的實(shí)現(xiàn)
本文主要介紹了Nginx隱藏server頭信息的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01隱藏網(wǎng)站Nginx版本號(hào)信息的方法分享
隱藏網(wǎng)站nginx服務(wù)的版本號(hào)信息,在安全的角度上來說,可以防止黑客快速利用nginx的版本漏洞進(jìn)行攻擊,所以本文為大家整理了隱藏網(wǎng)站Nginx版本號(hào)信息的方法,希望對(duì)大家有所幫助2023-08-08Nginx負(fù)載均衡下的webshell連接的實(shí)現(xiàn)
在解決shell文件上傳問題、命令執(zhí)行漂移等困難后,可實(shí)現(xiàn)正常的webshell上傳,本文主要介紹了Nginx負(fù)載均衡下的webshell連接的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01詳解Nginx配置SSL證書實(shí)現(xiàn)Https訪問
這篇文章主要介紹了詳解Nginx配置SSL證書實(shí)現(xiàn)Https訪問,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Nginx出現(xiàn)403?Forbidden的幾種簡單解決方式
這篇文章主要介紹了Nginx出現(xiàn)403?Forbidden的幾種解決思路,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12