Nginx遇上Access Denied提示怎么解决

本文介绍了解决Nginx服务下特定文件类型无法访问的问题,通过修改php-fpm.conf中的security.limit_extensions配置,允许多种文件扩展名被访问。
Nginx遇上Access Denied提示怎么解决

转自:https://www.cnblogs.com/lixiuran/p/3580177.html

近期想借用nginx服务访问或下载文件。把一个.xml文件放到webroot跟路径,结果该路径.php文件可访问,其他任何扩展名都无法访问。参考如下方案得到解决。不同情况装的软件路径不一定一样,单独安装的nginx可才参考如下路径,我的就不贴了公司特有路径,总之找到对应软件的配置文件修改即可。

文件/usr/local/nginx/logs/error.log
FastCGI sent in stderr: “Access to the script ‘/var/www/html//phpmyadmin/setup/styles.css’ has been denied (see security.limit_extensions)”

打开日志发现会出现security.limit_extensions 这样的错误。
经过查找资料发现从5.3.9开始,php官方加入了一个配置"security.limit_extensions",默认状态下只允许执行扩展名为".php"的文件,造成了其他类型的文件不支持的问题。
所以更改策略如下:
修改/usr/local/php/etc/php-fpm.conf,找到security.limit_extensions把他修改为:
security.limit_extensions=.php .html .js .css .jpg .jpeg .gif .png .htm#(常用的文件扩展名,记得去掉行首的;)
然后问题就解决啦!

<think>嗯,用户遇到了Nginx代理Minio查看图片时出现AccessDenied错误的问题。我需要先理清楚可能的原因,然后一步步排查。首先,用户可能已经配置了Nginx作为反向代理,但访问图片时Minio返回了权限拒绝。这可能涉及到Nginx的配置问题,或者Minio本身的权限设置。 首先想到的是Nginx的代理配置是否正确。比如,是否正确转发了必要的头信息。Minio的API可能依赖于某些HTTP头来判断请求的有效性,比如Host头。如果Nginx没有正确传递这些头,Minio可能无法识别请求的来源,导致权限问题。这时候需要检查Nginx的proxy_set_header指令,确保Host、X-Real-IP、X-Forwarded-For等头信息被正确传递。 另外,SSL证书的问题也可能导致这种情况。如果Nginx配置了SSL,但Minio那边使用的是自签名证书或者配置不一致,可能会引发证书验证错误,进而导致AccessDenied。这时候可能需要检查proxy_ssl_verify之类的配置,或者暂时关闭SSL验证来测试。 接下来要考虑的是Minio的存储桶权限。如果存储桶是私有的,那么通过Nginx访问时,如果没有提供有效的访问凭证,Minio自然会拒绝访问。用户可能需要在请求中包含正确的签名信息,或者将存储桶设置为公开可读。这时候需要检查Minio的存储桶策略,是否允许匿名访问,或者Nginx代理是否能够携带必要的认证信息。 还有一个可能性是路径转发的问题。Nginx配置的代理路径可能与Minio的实际路径不匹配,导致请求被发送到错误的端点。例如,Nginx将请求代理到Minio的根路径,而实际资源可能在别的路径下。需要检查proxy_pass的配置是否正确,路径是否有拼接错误。 此外,缓存问题也可能导致权限错误。如果Nginx缓存了旧的错误响应,即使问题已经解决,用户仍然可能看到AccessDenied。这时候需要检查Nginx的缓存配置,或者尝试清除缓存。 还有可能,Minio服务器本身的日志会提供更详细的错误信息。查看Minio的日志可以帮助确定问题根源,比如是否确实有权限问题,或者请求是否被错误处理。 总结下来,可能的解决步骤包括检查Nginx的代理头配置,确认SSL设置正确,调整存储桶权限,验证路径转发是否正确,以及检查Minio的日志。用户需要逐一排查这些方面,找出具体的错误原因并进行相应的调整。</think>### Nginx代理MinIO查看图片报错`AccessDenied`的排查步骤 --- #### 1. **检查MinIO存储桶权限** - **问题**:MinIO默认存储桶为私有,需显式设置访问权限。 - **解决**: 1. 通过`mc`命令行工具设置存储桶为公开可读: ```bash mc anonymous set public myminio/mybucket ``` 2. 或通过MinIO控制台修改存储桶策略(Bucket Policy),允许`GetObject`操作: ```json { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": ["arn:aws:s3:::mybucket/*"] }] } ``` --- #### 2. **验证Nginx代理配置** - **关键点**:确保Nginx正确转发请求头,避免MinIO因丢失关键信息而拒绝请求。 - **配置示例**: ```nginx location /minio/ { proxy_pass http://minio-server:9000/; # 注意结尾的斜杠 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; proxy_http_version 1.1; } ``` - **常见错误**: - `proxy_pass`路径拼接问题(如末尾缺少`/`)。 - 未传递`Host`头,导致MinIO无法识别虚拟主机模式。 --- #### 3. **检查SSL/TLS配置(如启用HTTPS)** - **场景**:若MinIO配置了自签名证书,需在Nginx
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值