目的:节省OSS外网访问流出流量
购买了阿里云OSS的存储资源包后,发现还需要外网访问流出费用,内网访问是免费的。
百度得相关方法,即设置反向代理。前提是服务器和OSS存储桶需要属于同一个地区。
一、环境
服务器环境 Nginx 1.20.2+MySQL 5.6.50+PHP-7.1
使用宝塔管理服务器
比如 服务器IP:140.140.140.140
网站地址:a.baidu.com
二、阿里云OSS设置
1、前提服务器所属地与OSS中存储桶位置需一致:
(只要两者都属于同一区域就可以,不同账号购买的服务器和OSS也可以)
(此处设置的权限是为了跨域读写)
2、将该存储桶绑定到需要用于访问的域名,比如: oss.baidu.com
3、解析需要访问OSS的域名(比如:oss.baidu.com)到网站服务器(比如140.140.140.140)
三、服务器配置(即在宝塔中配置)
1、将解析好的域名(比如:oss.baidu.com)绑定到网站目录
(注意此处就直接绑定到网站根目录就行,不需要绑定到public目录下)
2、不设置伪静态
(当前域名不需要用于访问,故不需要伪静态,若设置了伪静态,则宝塔中就无法设置反向代理)
3、设置反向代理
4、效果
四、遇到的问题
1、网站域名因为设置了伪静态,故设置反向代理时,报错:
伪静态/nginx主配置/vhost/文件已经存在全局反向代理
报错原因
1>存在伪静态
2>nginx的配置文件中,存在以下配置
location / {if (!-e $request_filename){rewrite ^(.*)$ /index.php?s=$1 last; break;} }
2、投机取巧的先清除伪静态(nginx的配置文件中无全局代理的配置),设置反向代理后,在设置伪静态
这样操作后,伪静态就无法设置了,整个网站就无法打开了
3、网站根目录指向了public后,打开网站链接地址(所有的链接地址)都会跳转到install.php.
此处我的处理方式是,直接删掉网站(不删除文件目录、FTP、数据库),重新创建