使用雷池Waf架构搭建woocommerce外贸网站

需求描述

搭建一个外贸网站,不使用saas平台,使用成熟的架构,尽量以低成本高性价比的方式搭建,网站使用中英双语,需要国内和国外都能访问

技术方案

  1. 综合考虑之后,放弃Shopify平台,选用wordpress的woocommerce系统
  2. 为应对网络攻击,选择雷池作为Waf对网站进行防护
  3. 系统架构图如下

服务器选型建议

源站服务器要求:性能强劲,推荐2核4G以上。

此处我选用netcup的RS 1000 G12,数据中心选择美国,性能够强,平台和系统够稳定,99.9%的最低可用率保证,性价比特别高,自带免费Dos防护,不过由于我们要用雷池Waf,所以用不到这个功能了,地址:https://www.netcup.com/

我在一台RS1000上面同时跑过10个woocommerce商城,运行十分稳定迅速,不过这些网站并发不高

Waf服务器选型要求:这里我使用的是免费版的雷池Waf,只能单线程运行,所以选择1核2G的配置就够了,cpu最好是AMD的,因为单核性能强。这里由于需要考虑到国内用户的访问优化,因此特地选用了DMIT的LAX.AN5.Pro.TINY,这是目前我测试下来目前相对来说国际线路质量和服务最好的。地址:https://www.dmit.io/

如果不需要考虑国内用户访问的话,那直接用netcup的低配服务器就行了

搭建过程

源站服务器

  1. 源站服务器选用debain系统,然后安装aapanel(海外版宝塔),随后一键安装PHP8.4,Mysql8.0,Nginx1.24,安装过程不赘述,网上教程太多了
  2. 到网站--添加站点创建你的站点
  3. 打开站点详情,在域名管理这里再加一个源站服务器公网ip:任意端口号的访问地址,我这里用的是9011,你只要选择没有在使用的端口号就行了,这一步是因为源站是通过公网ip加端口号映射出去给waf的
  4. 选择好重定向规则为wordpress
  5. 到配置这里添加两行配置,ip地址填写Waf服务器的公网ip,防止未经waf的流量攻击源站
bash 复制代码
allow XX.XX.XX.XX;  # 反向代理服务器的IP
deny all;  # 拒绝其他所有IP
  1. 到wordpress官网下载最新版wordpress,随后上传压缩包到服务器上并解压,将里面的文件放到上面第2步的网站路径里面

    网址:https://wordpress.org/download/

  2. 打开站点路径下的wp-config-sample.php/wp-config.php,在/* Add any custom values between this line and the "stop editing" line. */下面添加以下代码

bash 复制代码
/**
 * 修复反向代理后的HTTPS重定向问题
 */
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

/**
 * 处理反向代理后的真实 IP 和 HTTPS
 */
if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
    $forwarded_ips = explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] );
    $_SERVER['REMOTE_ADDR'] = trim( $forwarded_ips[0] );
}

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
    $_SERVER['HTTPS'] = 'on';
}

Waf服务器

  1. Waf服务器上运行雷池官网的一键安装命令进行安装,地址:https://help.waf-ce.chaitin.cn/node/01973fc6-df0f-7650-bafa-8ed8d2fc2bc1
  2. 到防护应用--高级配置这里打开这些选项
  3. 到黑白名单--自定义规则,添加以下两条规则

bash 复制代码
/wp-json/wp/v2/users/me?context=edit&_locale=user
  1. 到CC防护--频率限制--全局配置修改限制,此处可按需调整
  2. 攻击防护--语义分析模块调整如图所示,关闭了XSS检测是因为在编辑wordpress时这里总是会被误判为攻击,所以我先关闭了,等完成网站搭建之后再开启,各位自行按需调整
  3. 当你意识到自己的访问被拦截时,可以到黑白名单处查看拦截详情,确认是自己的正常访问则可以把ip加入白名单
  4. 将域名的dns添加A记录解析到waf服务器的公网ip
  5. 添加应用,上游服务器地址填写站点刚刚设置的公网ip加端口号,记的开启CC防护和攻击防护

wordpress

  1. 完成上述设置之后,访问网址,开始搭建,步骤就不赘述了,网上教程很多
  2. 主题尽量选择轻量的,个人不建议使用woodmart等特别重的主题,设置特别复杂,且拖慢访问速度,我使用的是astra主题,可以到淘宝购买到正版授权,很便宜
  3. 不建议使用elementor这些的编辑器,拖慢访问速度,且我觉得不好用,使用原生的古腾堡就够用了
  4. AI时代来了,其实更建议是用AI来编写页面html代码,然后放到网页上去,可以比编辑器做的好看多了,推荐使用gemini
  5. 推荐插件:(大多为免费,pro版本可以到tb看看pojie的)
    · Advanced Shipment Tracking for WooCommerce,物流追踪
    · Bulky - Bulk Edit Products for WooCommerce,批量编辑商品信息
    · FileBird Pro,图片分类管理
    · Redis Object Cache,访问速度优化
    · Simple CAPTCHA Alternative with Cloudflare Turnstile,人机验证,不过国内访问质量一般,也可以使用我从子比主题提取出来的人机验证插件
    · SureMail,发邮件的
    · TranslatePress,翻译
    · WC Share Cart URL,购物车分享,不过需要适量对插件代码进行调整才好用
    · WP Statistics,统计网站访问流量

结语

内容太多了,我这里给的教程其实比较简单,网上能搜得到的教程我就不写这么详细了,主要还是想分享一下个人经验总结出来的雷池waf防护框架结构,之前用宝塔直接对外开放网站的时候总是会遇到CC攻击等的一些网络攻击无法处理,现在上了雷池之后就好多了,下期写写怎么优化网站访问速度,这里也多的注意事项。各位读者如果有问题想交流欢迎在评论区留言。

相关推荐
Linux运维技术栈12 小时前
WAF部署在防火墙后面,获取不到真实IP怎么办?
服务器·网络·tcp/ip·安全·防火墙·waf
李纲明17 小时前
WordPress 报 Allowed memory size exhausted:先抓堆栈找吃内存的插件,再改 memory_limit
性能优化·php·内存·插件·wordpress·devdiy
李纲明3 天前
WordPress 前台改完还是旧页:浏览器、CDN、页面缓存、对象缓存怎么分层清
缓存·cdn·wordpress·devdiy
李纲明4 天前
WordPress 结账页一直转圈不跳支付:AJAX、缓存排除、支付回调和 REST 怎么逐层核
运维·ajax·缓存·wordpress·woocommerce·devdiy·结账
李纲明5 天前
WordPress 安装或更新插件提示「无法创建目录」:权限、磁盘空间与 FS_METHOD 排查
wordpress·插件安装·devdiy·无法创建目录·fs_method
李纲明5 天前
WordPress 后台登录马上被踢回登录页:Cookie 域、HTTPS、盐值和页面缓存怎么查
运维·缓存·https·php·wordpress·cookie
用户60968624266085 天前
页面构建器做的页面翻译:短代码、区块、动态内容各自会踩什么坑
php·wordpress
李纲明6 天前
WordPress 挂上 Cloudflare 后询盘和后台异常:缓存规则、SSL 模式和真实 IP 怎么核
运维·缓存·https·cdn·wordpress·cloudflare
DEVDIY6 天前
WordPress TTFB 高怎么排查:7 步定位服务端瓶颈
wordpress
李纲明7 天前
WordPress 媒体库上传图片报「HTTP 错误」:php.ini、临时目录、安全插件和 CDN 怎么逐层查
运维·php·上传·cdn·wordpress·媒体库