nginx-apache-wordpress:在子目录下设置apache / wordpress,在nginx后面

时间:2013-03-10 13:13:12

标签: wordpress apache nginx rewrite subdirectory

我开发了一个Rails应用程序并对它很满意,但我被要求在子目录/wp下设置Wordpress。在尝试使用nginx-to-apache代理工作的一些不愉快的时间之后,我放弃了从糟糕的指南中复制代码并编写了一些非常简短明了的配置:

location @wp {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_redirect off;
  proxy_pass http://127.0.0.1:8080;
}

location ~ ^/wp(/|$) {
  root /home/apache/www;
  rewrite ^/wp/?$ / break;
  rewrite ^/wp/(.*) /$1 break;
  try_files $uri @wp;
}

它解决了我经历过的大多数问题,但是由于一个明显的原因它不会起作用: Wordpress生成<real_ip>:8080/<url>链接,这不仅仅是丑陋的(我可以忍受它),但链接不起作用,因为Apache只在localhost上侦听。 我怎样才能告诉Apache或Wordpress(或者我应该用Nginx代理什么标题)来使链接看起来像<real_ip>/wp/<url>?或者我的设置是否因设计错误?我将不胜感激任何解决方案或提示,谢谢!

1 个答案:

答案 0 :(得分:0)

下面是我对nginx的配置,它在主根目录下运行Rails应用程序,在子目录下运行WordPress博客。也许试试这个?

server {
  listen <ip-address>:80;
  server_name domain.com;
  rewrite ^(.*)$ $scheme://www.domain.com$request_uri? permanent;
  break;
}

server {
  listen <ip-address>:80;
  server_name www.domain.com;
  root   /www/domain.com/public_html/current/public;

  access_log /www/domain.com/logs/access.log;
  error_log /www/domain.com/logs/error.log;

  location ^~ /blog {
    root /www/domain.com/blog/public_html;
    index index.php index.html index.htm;
    try_files $uri $uri/ /blog/index.php?$args;

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        if ($uri !~ "^/images/") {
                fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
        }
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/domain.com/blog/public_html$fastcgi_script_name;
   }
}