如何让Rails服务器从新EC2实例的PHP(WP)获取响应
保持原域名/ab/路径指向新EC2上WordPress的可行方案
我来给你几个实用的方案,完美解决你把WordPress迁移到新EC2后,保持原域名www.domain.com/ab/路径访问的需求——核心思路是让原EC2上的Nginx负责转发请求到新实例,完全不用修改客户端的访问习惯:
方案一:Nginx反向代理(最推荐,成本最低)
这是最直接高效的方案,利用原EC2上已有的Nginx,把/ab/路径的所有请求转发到新EC2的WordPress实例。你只需要修改原Rails应用的Nginx配置,替换掉原来处理/ab/的location块即可。
修改后的Nginx配置示例:
location ^~ /ab/ { # 替换成新EC2的内网IP(优先推荐,速度更快更安全)或公网IP proxy_pass http://新EC2_IP地址/; # 传递关键请求头,让WordPress能正确识别原域名和客户端真实信息 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 用HTTPS的话必须加这条 # 静态资源缓存配置,减轻新EC2的负载压力 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; proxy_pass http://新EC2_IP地址/; proxy_cache_valid 200 365d; # 可选:开启Nginx本地缓存进一步优化速度 } }
关键注意事项:
- 新EC2的WordPress配置:必须修改WP的站点URL,让它知道请求来自
www.domain.com/ab/。你可以在WP后台「设置-常规」里把「WordPress地址(URL)」和「站点地址(URL)」改成https://www.domain.com/ab/,或者直接在wp-config.php里添加:define('WP_HOME','https://www.domain.com/ab/'); define('WP_SITEURL','https://www.domain.com/ab/'); - 网络连通性检查:确保原EC2能访问新EC2的80/443端口。如果用内网IP,要在新EC2的安全组里开放对应端口给原EC2的内网IP;用公网IP的话,建议只开放给原EC2的公网IP,避免不必要的暴露。
- 重启Nginx生效:修改配置后,执行
sudo systemctl restart nginx(或sudo service nginx restart)让新配置生效。
方案二:CDN路径转发(适合已有CDN的场景)
如果你已经在用Cloudflare、阿里云CDN等服务,可以直接在CDN控制台配置路径规则,把www.domain.com/ab/*的请求转发到新EC2的IP或域名。
比如在Cloudflare里,创建一条Page Rule:
- 匹配URL:
www.domain.com/ab/* - 转发设置:选择「转发URL」,目标URL设为
http://新EC2_IP地址/$1,转发类型先选「302临时转发」测试,没问题后改成「301永久转发」
这个方案的好处是不用修改原EC2的Nginx配置,但需要依赖CDN服务,且要确保CDN能正确转发所有请求头给新EC2。
方案三:新EC2作为反向代理(不太推荐)
这个方案是把原域名www.domain.com解析到新EC2,然后在新EC2的Nginx里把非/ab/路径的请求转发回原EC2的Rails应用。但这种方式会让所有请求先经过新EC2,增加了一层转发,原Rails应用的流量也会绕路,效率不如方案一。
总结
优先选择方案一,它最简便、高效,完全符合你的需求:原域名不变,/ab/路径请求自动转发到新EC2的WordPress,Rails应用不受任何影响。
内容的提问来源于stack exchange,提问作者Nish18
相关产品推荐
相关产品推荐

