nginx 从rails 反向代理到wordpress

Max*_*nin 5 url wordpress reverse-proxy ruby-on-rails nginx

我有一个 Ruby on Rails 应用程序和一个托管在不同 EC2 实例上的 Wordpress 博客。

我正在尝试使 Wordpress 博客充当 Rails 应用程序的子文件夹(example.com/blog 而不是 blog.example.com),以实现更好的 SEO

  • Rails应用程序可以通过http和https访问(http正在重定向到https)

https://www.nginx.com/resources/admin-guide/reverse-proxy/

我尝试使用 nginx 反向代理功能,我认为这是我现在最好的选择,但我的尝试不成功。

  1. 博客的主页按预期打开(example.com/blog),但没有 CSS。
  2. 带有争论的 URL (example.com/blog/args) 将我重定向回 Rails 应用程序 (example.com/args)

我在 wp-config.php 中设置所需的博客 URL,如下所示:

define('WP_SITEURL', 'https://www.example.com/blog');
define('WP_HOME', 'https://www.example.com/blog');
Run Code Online (Sandbox Code Playgroud)

这是我使用的 nginx 配置:

  location ^~ /blog {
   proxy_pass http://<<BLOGIP>>/blog;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
Run Code Online (Sandbox Code Playgroud)

对于 Rails 应用程序和 Wordpress 博客来说,出于自动扩展、冗余和部署目的保持分离非常重要。

如果有其他方法可以实现这一目标,我愿意接受建议。

Tar*_*ani 1

现在您的博客已经可以使用了,http://<blogip>/blog您还需要修复一些问题

location ^~ /blog { 
   proxy_pass http://<<BLOG_IP>>/blog; 
   proxy_set_header X-Real-IP $remote_addr; 
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

   proxy_redirect http://<ip>/ https://$host/;
   proxy_cookie_domain <ip> $host;
   proxy_set_header X-Forwarded-Proto $scheme;

}
Run Code Online (Sandbox Code Playgroud)

还将以下内容添加到您的wp-config.php

define('FORCE_SSL_ADMIN', true); 

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') 
$_SERVER['HTTPS']='on';
Run Code Online (Sandbox Code Playgroud)