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

跨独立EC2服务器配置Nginx反向代理实现WordPress子目录访问

解决思路:用Nginx反向代理实现路径分流

嘿,这个需求其实挺典型的——把不同路径的请求分发到两台独立的服务器上。咱们不用折腾复杂的DNS配置,直接在主站的Nginx服务器上做反向代理就搞定了,步骤如下:

一、修改主站Nginx的配置文件

主站用的是Nginx,正好可以直接用它的反向代理功能把/blog开头的请求转发到博客服务器。

  1. 找到主站的Nginx配置文件,通常在/etc/nginx/sites-available/example.com(或者/etc/nginx/nginx.conf里的server块)。
  2. 在你的主站server块里,添加专门处理/blog路径的location规则:
server {
    listen 80;
    server_name example.com;

    # 保留你原来的主站配置,比如主站的根目录、FastCGI配置等
    location / {
        root /var/www/main-site;
        index index.html index.php;
        # 其他原有配置...
    }

    # 关键:处理所有/blog开头的请求,转发到博客EC2
    location ^~ /blog {
        proxy_pass http://35.0.0.2;
        # 传递客户端请求头,避免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;

        # 如果你想让example.com/blog对应博客服务器的/blog子目录,把上面的proxy_pass改成:
        # proxy_pass http://35.0.0.2/blog;
        # 但要确保博客服务器上的WordPress确实部署在/blog路径下
    }
}
  1. 检查配置是否合法:sudo nginx -t,如果提示test is successful,就重启Nginx生效:sudo systemctl restart nginx

二、配置博客服务器的Apache和WordPress

这一步是为了避免博客直接暴露,并且让WordPress正确识别访问路径:

  1. 限制Apache的访问来源:为了安全,只允许主站服务器的IP访问博客。编辑Apache的配置文件(比如/etc/apache2/sites-available/000-default.conf),在Directory块里添加IP限制:
<Directory /var/www/wordpress>
    # 原有配置(比如AllowOverride All等)保留
    Require ip 35.0.0.1
</Directory>

然后重启Apache:sudo systemctl restart apache2

  1. 修改WordPress的站点URL:登录WordPress后台,进入「设置」→「常规」,把:
    • WordPress地址(URL)改成http://example.com/blog
    • 站点地址(URL)改成http://example.com/blog
      (如果用HTTPS的话,把http换成https)
      这样WordPress生成的链接就会是example.com/blog开头,不会跳转到博客服务器的IP。

三、检查EC2安全组设置

确保两台服务器的安全组配置正确:

  • 主站EC2:允许80/443端口的入站流量(来自所有IP,因为要对外提供服务)
  • 博客EC2:只允许来自主站EC2 IP的80/443端口入站流量,禁止其他IP直接访问

测试验证

现在访问example.com应该加载主站的Web应用,访问example.com/blog(包括子路径比如example.com/blog/post/123)应该正常显示WordPress的内容了。

如果遇到重定向错误,大概率是WordPress的URL没设置对,或者Nginx的proxy_pass配置有问题,回头检查一下就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:30:34