You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP或Apache/Nginx服务器域名白名单配置及API安全鉴权咨询

Plesk + Ubuntu 环境下API域名白名单实现方案

下面是适配你场景的两种可落地方案,按优先级排序:

方案1:Plesk面板原生配置(优先选择,无服务器操作经验也可快速落地)

不需要登陆服务器改配置,所有操作都在Plesk可视化界面完成,配置出错会直接提示不会生效,不会影响线上业务。

  • 第一步:确认站点Web引擎
    登陆Plesk后台,进入对应API站点的「主机设置」页,找到Web服务器板块,确认运行的是Apache还是Nginx。
  • 第二步:添加白名单配置
    进入站点的「Apache & Nginx 设置」页,拉到页面最下方的「附加指令」板块:
    • 若使用Nginx,在Nginx附加指令输入框填写以下内容,将示例域名替换为你75个白名单域名即可:
# 定义白名单Origin映射
map $http_origin $allowed_origin {
    default "";
    https://example1.com "https://example1.com";
    https://example2.com "https://example2.com";
    # 按以上格式依次添加剩余73个白名单,必须带完整http/https前缀,有端口的话也要带上
}

# 配置CORS头
add_header Access-Control-Allow-Origin $allowed_origin always;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
add_header Access-Control-Allow-Headers "Content-Type, Accept" always;

# 处理OPTIONS预检请求
if ($request_method = OPTIONS) {
    return 204;
}

# 非白名单请求直接返回403拦截
if ($allowed_origin = "") {
    return 403;
}
  • 若使用Apache,在Apache附加指令输入框填写以下内容,将正则内的域名替换为你的75个白名单即可:
# 匹配白名单Origin
SetEnvIf Origin "^(https://example1\.com|https://example2\.com)$" allowed_origin
# 所有75个域名都写到上面的正则里,用|分隔,注意域名里的.要转义成\.

# 配置CORS头
Header always set Access-Control-Allow-Origin %{allowed_origin}e env=allowed_origin
Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" env=allowed_origin
Header always set Access-Control-Allow-Headers "Content-Type, Accept" env=allowed_origin

<IfModule mod_rewrite.c>
    RewriteEngine On
    # 处理OPTIONS预检请求
    RewriteCond %{REQUEST_METHOD} OPTIONS
    RewriteRule ^(.*)$ $1 [R=204,L]
    
    # 拦截非白名单请求
    RewriteCond %{ENV:allowed_origin} ^$
    RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
  • 第三步:点击「应用」保存配置,Plesk会自动重载Web服务,配置完成后可以用非白名单域名发起请求测试是否返回403。

方案2:增强安全性补充方案

因为Origin/Referer头存在伪造的可能性,如果你对安全性要求更高,可以再加一层轻量校验:

  • 提前和所有调用方约定一个固定密钥,要求调用方在请求头中携带X-Req-Sign字段,值为MD5(请求路径 + 10位unix时间戳 + 约定密钥),同时携带X-Req-Time字段存时间戳
  • 在CodeIgniter 3的公共控制器构造函数里加校验逻辑:先判断时间戳是否在前后5分钟范围内,再校验签名是否一致,即使Origin头被伪造也无法通过校验。

注意事项

  • 如果有服务端直接调用API的场景(无Origin头),不要把这类调用放到域名白名单里,建议单独加IP白名单校验
  • 75个域名数量较多,建议单独存成一个配置文件,Nginx/Apache都支持include指令引入外部配置,后续更新白名单不需要修改核心配置,降低出错概率

内容的提问来源于stack exchange,提问作者vikas dhiman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:27:02