最近用的宝塔反向代理自建的cdn教程👉Bt(宝塔面板)反向绑定/自建CDN节点/加快海外网站访问速度
最近查看有用户反应不能访问提示504错误,查看反向代理服务器出现获取失败。
反向代理服务器错误日志:
2023/12/31 10:53:57 [error] 13175#0: *21809 upstream timed out (110: Connection timed out) while SSL handshaking to upstream, client: 61.149.211.66, server: cdn.abc.com, request: "GET /qiepian316.ts HTTP/2.0", upstream: "https://192.168.1.100:443/tupian.jpg", host: "cdn.abc.com", referrer: "https://www.abc.com/"
报错:directory index of “xxx“ is forbidden
研究半天才发现应该是源服务器限制来自你的返现代理服务器Nginx服务器的IP地址的访问。https://192.168.1.100:443/tupian.jpg 这里可以看到反向代理服务器是通过ip链接源服务器获取数据进行缓存的
限制来自你的Nginx服务器的IP地址的访问怎么办?
要限制或允许特定IP地址访问Nginx服务器,你可以使用allow
和deny
指令。以下是如何修改Nginx配置以限制或允许特定IP地址访问的基本步骤:
- 打开Nginx配置文件:
通常,Nginx的配置文件位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
。 - 在适当的location块中添加allow和deny指令:
如果你想限制某个IP地址或IP地址范围的访问,你可以使用deny
指令。如果你想允许某个IP地址或IP地址范围的访问,你可以使用allow
指令。
例如,要限制访问特定IP(如192.168.1.100)和特定的IP范围(如194.168.2.0/24),你可以这样做:
server {
...
location / {
allow 192.168.1.100;
allow 194.168.2.0/24;
deny all;
...
}
...
}
在上面的例子中,只有IP地址为192.168.1.100的客户端可以访问该location。其他所有客户端都被拒绝。
3. 保存并关闭文件。
4. 重新加载Nginx配置:
为了使更改生效,你需要重新加载Nginx配置。在ssh端用以下命令重启服务:
sudo service nginx reload
- 测试配置:
使用一个工具,如curl或wget,从你希望允许或拒绝的IP地址测试Nginx配置是否按预期工作。 - 注意事项:
- 确保你正确地配置了allow和deny指令,以避免意外地拒绝或允许过多的客户端。
- 如果你的Nginx服务器位于反向代理后面(例如,使用负载均衡器或CDN),请确保代理设置不会覆盖或绕过这些限制。
- 考虑使用更复杂的认证和授权解决方案,如OAuth、LDAP或其他第三方模块,以提供更精细的访问控制。
要是只允许 特定文件呢,比如图片文件
如果你想只允许特定的文件,例如图片文件,你可以使用location
块结合try_files
和root
指令。以下是一个示例配置,只允许访问图片文件:
server {
...
location ~ \.(jpg|jpeg|png|gif)$ {
root /path/to/your/images;
try_files $uri $uri/ /index.html;
allow 194.168.2.0/24;
deny all;
}
...
}
在上面的配置中,location
块使用正则表达式匹配以.jpg
、.jpeg
、.png
或.gif
结尾的文件请求。root
指令指定了图片文件的根目录。try_files
指令尝试按顺序提供文件、目录和默认文件(在这个例子中是/index.html
)。最后,通过allow
和deny
指令限制了允许访问的IP地址范围。
请确保将/path/to/your/images
替换为你实际的图片文件存储路径。这样,只有匹配的图片文件将被允许访问,其他请求将被拒绝。