Nginx配置动态代理后通过curl访问报403问题

 更新时间:2023年06月15日 09:51:16   作者:ProgrammingAh  
本文主要介绍了Nginx配置动态代理后通过curl访问报403问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

今天生产环境遇到了一个问题,在测试环境其他系统调用我们系统的一个接口没问题,在生产环境死活调不通

问题描述

有业务人员反馈最近刚发版的一个服务提供的接口,其他系统一直调用不通。

尝试解决

分析

单体项目,系统部署架构很简单,抽象一下如下图所示:

image.png

经过几次尝试有如下发现:

  • 浏览器上访问正常,不管是外网还是局域网
  • 通过curl请求接口,请求tomcat地址正常,请求nginx地址返回403
  • 其他系统通过通过nginx地址调用返回403,通过tomcat地址就正常

在网上找的解决方案

在网上搜索nginx配置动态代理报403,一般搜到4种情况

1、由于启动用户和 nginx 工作用户不一致所致

对比nginx配置文件中的用户与实际启动nginx用户是否一致

# 查看实际启动用户
ps -ef | grep nginx
# 查看配置文件中配置的用户
cat /usr/local/nginx/conf/nginx.conf

2、缺少 index.html 或者 index.php 文件,就是配置文件中 index index.html index.htm 这行中的指定的文件

查看root的配置目录下是否有index.html等文件,没有的话会报403

server {
	listen 80;
	server_name localhost;
	index index.html;
	root /data/www;
}

3、权限问题,如果 nginx 没有 web 目录的操作权限,也会出现 403 错误

运行nginx的用户对root的配置目录没有读写权限

# 修改web目录的读写权限,或者把nginx的启动用户改成目录的所属用户,或者将web目录的所属用户改为nginx的启动用户,重启nginx即可
chmod -R 777 /data/www
chown -R nginx:nginx /data/www

4、SELinux 设置为开启状态(enabled)的原因

# 查看当前selinux的状态
/usr/sbin/sestatus -v
# 将SELINUX=enforcing修改为selinux=disabled
vi /etc/selinux/config
SELINUX=disabled
# 重启系统生效
reboot

是终解决

最终发现都不是上述四种情况,经过多方分析,发现配置目录下多了一个配置/usr/local/nginx/conf/conf.d/agent_deny.config,内容大概如下所示:

# 禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
	return 403;
}
# 禁止UA及UA为空的访问
# 。。。
# 禁止非GET/POST方式的抓取
# 。。。

第一条就将curl和httpclient给禁用了,这也就解决了问题描述里对方系统调用接口和使用curl调用nginx地址时调不通的原因了。

解决方法,最终提供两个思路:

1、httpclient调用时修改User_Agent

2、直接调用tomcat接口

总结

遇到问题多总结,网上的答案不一定能解决你的问题,还要具体问题具体分析,多分析现象,根据现象找到蛛丝马迹。

到此这篇关于Nginx配置动态代理后通过curl访问报403问题的文章就介绍到这了,更多相关Nginx动态代理报403内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx 动态域名解析过程详解

    Nginx 动态域名解析过程详解

    这篇文章主要为大家介绍了Nginx 动态域名解析过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • nginx负载均衡配置,宕机自动切换方式

    nginx负载均衡配置,宕机自动切换方式

    这篇文章主要介绍了nginx负载均衡配置,宕机自动切换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Nginx部署SSL证书的过程

    Nginx部署SSL证书的过程

    SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本,这篇文章主要介绍了Nginx部署SSL证书的相关知识,需要的朋友可以参考下
    2022-10-10
  • Linux部署Nginx详细图文教程

    Linux部署Nginx详细图文教程

    这篇文章主要给大家介绍了关于Linux部署Nginx的相关资料,Nginx 是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,需要的朋友可以参考下
    2024-01-01
  • nginx启动服务提示98: Address already in use错误的解决

    nginx启动服务提示98: Address already in use错误的解决

    这篇文章主要给大家介绍了nginx启动服务提示98: Address already in use错误的解决方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Linux中Nginx反向代理如何实现不同路径访问不同的页面

    Linux中Nginx反向代理如何实现不同路径访问不同的页面

    这篇文章主要介绍了Linux中Nginx反向代理如何实现不同路径访问不同的页面方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 深入理解Nginx之error_page模块的使用

    深入理解Nginx之error_page模块的使用

    error_page是nginx一个重要的指令,作用是定制化服务器错误页面,本文主要介绍了Nginx之error_page模块的使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • 详解nginx服务器绑定域名和设置根目录的方法

    详解nginx服务器绑定域名和设置根目录的方法

    这篇文章主要介绍了详解nginx服务器绑定域名和设置根目录的方法,nginx服务器绑定域名以及设置根目录非常方便,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • nginx关于add_header的坑及解决

    nginx关于add_header的坑及解决

    这篇文章主要介绍了nginx关于add_header的坑及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 详解Nginx反向代理和负载均衡部署指南

    详解Nginx反向代理和负载均衡部署指南

    本篇文章主要介绍了Nginx反向代理和负载均衡部署指南 ,具有一定的参考价值,对学习Nginx的同学有一定的帮助,感兴趣的同学可以了解一下。
    2016-12-12

最新评论