Ngnix / Wordpress通过proxy-pass

时间:2019-02-19 00:13:08

标签: wordpress nginx url-rewriting

我在一个域中有两台服务器

  • 服务器托管mywebsite.com和
  • 服务器B托管blog.mywebsite.com(WordPress博客)。

我的目标是为我的博客提供一个无缝网址,其中包含服务器B的内容http://mywebsite.com/test23

我的第一个重定向正在工作(位置/ test23)。我可以获取主页并获取其他页面,但是无法连接到WP管理员。我在mywebsite.com/test23/wp-login.php上收到404。

服务器Nginx conf文件

    index index.php index.html index.htm;

    server_name mywebsite.com;

     location / {
             try_files $uri $uri/ /index.php?$args;
     }

     location ~ \.php$ {
             include snippets/fastcgi-php.conf;
             fastcgi_pass unix:/run/php/php7.0-fpm.sock;
             fastcgi_read_timeout 1000;
     }         

      location /test23 {
             rewrite ^/test23(.*) /$1 break;
              proxy_pass http://blog.mywebsite.com/;
     }

      location /test23/wp-admin {
             rewrite ^/test23/wp-admin(.*) /$1 break;
             proxy_pass http://blog.mywebsite.com/wp-admin;
     }

我想我需要管理wp-admin文件夹的排除?我有点迷失:D

1 个答案:

答案 0 :(得分:0)

由于代理了“ / test23”路径,并且使用了重写规则来绑定使用该地址的任何内容,因此不需要第二个位置块。

尝试使用此:

location /test23 {
             rewrite ^/test23(/.*)$ /$1 break;
              proxy_pass http://blog.mywebsite.com/;
     }

如果您尚未设置代理规则,则此块也可能类似于:

location /test23 {
                 rewrite ^/test23(/.*)$ /$1 break;
                 proxy_pass http://blog.mywebsite.com/;
                 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 https;
                 proxy_redirect    off;
    }

您应该在重写的“ test23”之后使用反斜杠。在第一种情况下,它有效,因为请求中的/ test23之后没有任何内容。

在第二个请求中,由于位置块的位置很重要,因此混淆了。因此,它会被第一个规则重写,从而导致没有反斜杠的错误。