Nginx配置動(dòng)態(tài)代理后通過(guò)curl訪問(wèn)報(bào)403問(wèn)題
今天生產(chǎn)環(huán)境遇到了一個(gè)問(wèn)題,在測(cè)試環(huán)境其他系統(tǒng)調(diào)用我們系統(tǒng)的一個(gè)接口沒(méi)問(wèn)題,在生產(chǎn)環(huán)境死活調(diào)不通
問(wèn)題描述
有業(yè)務(wù)人員反饋?zhàn)罱鼊偘l(fā)版的一個(gè)服務(wù)提供的接口,其他系統(tǒng)一直調(diào)用不通。
嘗試解決
分析
單體項(xiàng)目,系統(tǒng)部署架構(gòu)很簡(jiǎn)單,抽象一下如下圖所示:

經(jīng)過(guò)幾次嘗試有如下發(fā)現(xiàn):
- 瀏覽器上訪問(wèn)正常,不管是外網(wǎng)還是局域網(wǎng)
- 通過(guò)curl請(qǐng)求接口,請(qǐng)求tomcat地址正常,請(qǐng)求nginx地址返回403
- 其他系統(tǒng)通過(guò)通過(guò)nginx地址調(diào)用返回403,通過(guò)tomcat地址就正常
在網(wǎng)上找的解決方案
在網(wǎng)上搜索nginx配置動(dòng)態(tài)代理報(bào)403,一般搜到4種情況
1、由于啟動(dòng)用戶和 nginx 工作用戶不一致所致
對(duì)比nginx配置文件中的用戶與實(shí)際啟動(dòng)nginx用戶是否一致
# 查看實(shí)際啟動(dòng)用戶 ps -ef | grep nginx # 查看配置文件中配置的用戶 cat /usr/local/nginx/conf/nginx.conf
2、缺少 index.html 或者 index.php 文件,就是配置文件中 index index.html index.htm 這行中的指定的文件
查看root的配置目錄下是否有index.html等文件,沒(méi)有的話會(huì)報(bào)403
server {
listen 80;
server_name localhost;
index index.html;
root /data/www;
}3、權(quán)限問(wèn)題,如果 nginx 沒(méi)有 web 目錄的操作權(quán)限,也會(huì)出現(xiàn) 403 錯(cuò)誤
運(yùn)行nginx的用戶對(duì)root的配置目錄沒(méi)有讀寫權(quán)限
# 修改web目錄的讀寫權(quán)限,或者把nginx的啟動(dòng)用戶改成目錄的所屬用戶,或者將web目錄的所屬用戶改為nginx的啟動(dòng)用戶,重啟nginx即可 chmod -R 777 /data/www chown -R nginx:nginx /data/www
4、SELinux 設(shè)置為開啟狀態(tài)(enabled)的原因
# 查看當(dāng)前selinux的狀態(tài) /usr/sbin/sestatus -v # 將SELINUX=enforcing修改為selinux=disabled vi /etc/selinux/config SELINUX=disabled # 重啟系統(tǒng)生效 reboot
是終解決
最終發(fā)現(xiàn)都不是上述四種情況,經(jīng)過(guò)多方分析,發(fā)現(xiàn)配置目錄下多了一個(gè)配置/usr/local/nginx/conf/conf.d/agent_deny.config,內(nèi)容大概如下所示:
# 禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
# 禁止UA及UA為空的訪問(wèn)
# 。。。
# 禁止非GET/POST方式的抓取
# 。。。第一條就將curl和httpclient給禁用了,這也就解決了問(wèn)題描述里對(duì)方系統(tǒng)調(diào)用接口和使用curl調(diào)用nginx地址時(shí)調(diào)不通的原因了。
解決方法,最終提供兩個(gè)思路:
1、httpclient調(diào)用時(shí)修改User_Agent
2、直接調(diào)用tomcat接口
總結(jié)
遇到問(wèn)題多總結(jié),網(wǎng)上的答案不一定能解決你的問(wèn)題,還要具體問(wèn)題具體分析,多分析現(xiàn)象,根據(jù)現(xiàn)象找到蛛絲馬跡。
到此這篇關(guān)于Nginx配置動(dòng)態(tài)代理后通過(guò)curl訪問(wèn)報(bào)403問(wèn)題的文章就介紹到這了,更多相關(guān)Nginx動(dòng)態(tài)代理報(bào)403內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows下使用?Nginx?搭建?HTTP文件服務(wù)器?實(shí)現(xiàn)文件下載功能
Nginx?是一款輕量級(jí)的?HTTP?服務(wù)器,采用事件驅(qū)動(dòng)的異步非阻塞處理方式框架,這讓其具有極好的?IO?性能,時(shí)常用于服務(wù)端的反向代理和負(fù)載均衡,這篇文章主要介紹了Windows下使用?Nginx?搭建?HTTP文件服務(wù)器實(shí)現(xiàn)文件下載功能,需要的朋友可以參考下2023-03-03
Nginx防盜鏈與服務(wù)優(yōu)化配置的全過(guò)程
由于Nginx本身的一些優(yōu)點(diǎn),輕量,開源,易用,越來(lái)越多的公司使用nginx作為自己公司的web應(yīng)用服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Nginx防盜鏈與服務(wù)優(yōu)化配置的相關(guān)資料,需要的朋友可以參考下2022-01-01
Nginx中多種負(fù)載均衡策略配置的實(shí)戰(zhàn)指南
在當(dāng)今高并發(fā)、大流量的互聯(lián)網(wǎng)應(yīng)用中,單臺(tái)服務(wù)器往往難以承受巨大的訪問(wèn)壓力,負(fù)載均衡作為解決這一問(wèn)題的關(guān)鍵技術(shù),能夠?qū)⒄?qǐng)求分發(fā)到多臺(tái)服務(wù)器上,本文將深入探討Nginx負(fù)載均衡的各種策略和配置方法,大家可以根據(jù)需要進(jìn)行選擇2025-10-10
nginx配置選項(xiàng)try_files的用法及說(shuō)明
這篇文章主要介紹了nginx配置選項(xiàng)try_files的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-10-10
nginx中proxy_set_header參數(shù)的實(shí)現(xiàn)
本文詳細(xì)介紹了Nginx中proxy_set_header指令的用法,通過(guò)設(shè)置不同的請(qǐng)求頭信息,可以實(shí)現(xiàn)更靈活的反向代理功能,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
Nginx實(shí)現(xiàn)灰度發(fā)布的多種策略分享
灰度發(fā)布是一種重要的策略,它允許我們?cè)诓挥绊懰杏脩舻那闆r下逐步推出新功能或更新,本文介紹了Nginx實(shí)現(xiàn)灰度發(fā)布的多種策略,有需要的小伙伴可以了解下2026-04-04
nginx報(bào)錯(cuò)upstream sent invalid header的解決
本文主要介紹了nginx報(bào)錯(cuò)upstream sent invalid header的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12
nginx里的rewrite跳轉(zhuǎn)的實(shí)現(xiàn)
這篇文章主要介紹了nginx里的rewrite跳轉(zhuǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

