AWS多实例流量路由配置:Nginx实现域名子路径指向WordPress
标准处理流程分步指南
我来帮你一步步搞定这个需求,核心是Nginx反向代理配置加上WordPress内部URL适配,两者缺一不可,不然要么路由不对,要么WP的链接会乱跳。
一、前期准备
- 先确认两台AWS实例的网络连通性:建议用内网IP通信(更安全且延迟低),所以要确保它们在同一个VPC下,并且WP实例的安全组允许来自Java实例(或Nginx所在实例)的80/443端口流量。如果用公网IP的话,记得WP实例安全组开放对应端口给公网,但更推荐内网方案。
- 备份当前Nginx配置:执行
cp /etc/nginx/sites-available/domain.com /etc/nginx/sites-available/domain.com.bak,万一配置出错能快速回滚。
二、修改Nginx配置(核心步骤)
找到你的domain.com对应的Nginx配置文件(一般在/etc/nginx/sites-available/或/etc/nginx/conf.d/目录下),在server块中新增location /a/的规则,完整示例如下:
server { listen 80; server_name domain.com; # 原Java网站的路由配置(保留你现有内容即可) location / { proxy_pass http://localhost:8080; # 假设Java服务跑在本地8080,按实际情况修改 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 新增:把/a/路径的流量转发到WP实例 location /a/ { # 注意末尾的斜杠!这样Nginx会把/a/后面的路径(比如/a/post/1)传递给WP实例的根路径(变成WP_IP/post/1) proxy_pass http://WP_INSTANCE_INTERNAL_IP/; # 替换成WP实例的内网IP,公网IP也可 # 必须设置Host头为domain.com,否则WP会用自己的IP生成链接,导致资源加载失败 proxy_set_header Host $host; # 传递真实客户端IP给WP,方便日志统计 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 处理WP的重定向:如果WP返回跳转到domain.com/,自动改成domain.com/a/ proxy_redirect http://domain.com/ http://domain.com/a/; proxy_redirect https://domain.com/ https://domain.com/a/; } # 如果用HTTPS,记得在对应的server块里也添加同样的location /a/规则 }
配置完后,先验证语法是否正确:nginx -t,如果显示test is successful,就重启Nginx生效:
- Ubuntu/Debian:
sudo systemctl restart nginx - CentOS/RHEL:
sudo service nginx restart
三、调整WordPress内部配置(关键!不然链接会乱)
WP默认会根据访问的Host和路径生成链接,必须让它知道自己的访问地址是domain.com/a,不然会出现静态资源404、页面跳转到根域名的问题。有两种常用方法:
方法1:修改wp-config.php(推荐,更稳定)
登录WP实例,找到网站根目录下的wp-config.php文件,在/* That's all, stop editing! Happy publishing. */这行之前添加:
define('WP_HOME', 'http://domain.com/a'); define('WP_SITEURL', 'http://domain.com/a');
如果用HTTPS,把http换成https即可。保存文件后,WP会自动用这个地址生成所有链接和资源路径,不需要进后台设置。
方法2:通过WP后台修改(适合能直接访问WP后台的情况)
如果之前能通过WP实例的IP访问后台,登录后进入设置→常规,把:
- WordPress地址(URL):改成
http://domain.com/a - 站点地址(URL):改成
http://domain.com/a
点击“保存更改”。注意:改完后只能通过domain.com/a/wp-admin访问后台了,别再用IP访问。
另外,如果你之前开启了固定链接(比如/%postname%/),记得进入设置→固定链接,不用改任何选项,直接点击“保存更改”,刷新WP的rewrite规则,避免出现文章404的问题。
四、测试验证
- 访问
domain.com:确认Java网站正常加载,功能不受影响。 - 访问
domain.com/a:确认WP首页正常,点击文章、分类、菜单等,检查所有URL都是domain.com/a/xxx格式,图片、CSS、JS等静态资源能正常加载。 - 测试WP后台:访问
domain.com/a/wp-admin,登录后检查媒体库、文章编辑等功能是否正常,生成的预览链接是否正确。
额外注意事项
- HTTPS适配:如果你的域名用了SSL证书,要确保Nginx的HTTPS server块也配置了相同的
location /a/规则,并且WP的配置里用https开头的地址。 - 缓存清理:如果Nginx或WP安装了缓存插件(比如WP Rocket、W3 Total Cache),记得清理缓存,避免旧的URL缓存导致异常。
- 安全组检查:确保WP实例的安全组允许来自Nginx实例IP的80/443端口流量,不然Nginx无法转发请求到WP。
内容的提问来源于stack exchange,提问作者Deepen Shah
相关产品推荐
相关产品推荐

