Nginx proxy_pass 执行意外重定向

Nginx proxy_pass 执行意外重定向

我有两台服务器

  1. http://example.net- 我的“主”服务器
  2. http://example.com- 专用于我的博客的服务器

两台服务器都在 Ubuntu 14.04 上运行 Nginx。我已将 example.net 服务器配置为

location /blog {
 proxy_pass https://ip.of.example.com/blog;
 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://example.net/blog上的博客登录页面时example.com,会显示 。但是,这是以重定向到 example.com 服务器为代价的,因此浏览器地址栏最终会https://example.com/blog/path/to/article显示https://example.net/blog/path/to/article

除了这不是理想的结果之外,让博客内容出现在另一个域名上会带来灾难性的 SEO 后果。

恐怕我在这里工作很盲目,因为我对 Nginx 反向代理配置了解甚少。如果有人能提供帮助,我将不胜感激。

答案1

我花了大半天时间才弄清楚。所以这是给所有看到这篇文章的人的答案。这里的重点是确保你问了正确的问题。Nginx 配置非常合乎逻辑,所以问题不在这里。问题更多的是 Wordpress 处理事情的方式。为了解决这个问题,我最终编辑了 wp-config.php 文件并添加了

$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
define('WP_HOME', 'https://example.net/blog');
define('WP_SITEURL', 'https://example.net/blog');

通过此编辑 - 以及我原始问题中 example.net 的 Nginx 配置,一切都运行正常。希望这个答案可以让其他人免受我不得不忍受的挫败感和昂贵的时间损失。

相关内容