Wordpress、tomcat、apache2 和 nginx:Wordpress 上的重定向循环

Wordpress、tomcat、apache2 和 nginx:Wordpress 上的重定向循环

我为一个网站安装了 tomcat,为另一个网站 (wordpress) 安装了 apache2。问题发生在 wordpress 网站上。反向代理使用的是 nginx,如下所示:

server {
        listen   80;

        root /var/www/html/;
        index index.php index.html index.htm;

        server_name test.example.com;

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

        location ~ \.php$ {

        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8081;

         }

         location ~ /\.ht {
                deny all;
        }
}
server {
  listen 80;
  server_name conf.example.com;
  location / {
    proxy_pass http://127.0.0.1:8080;
  }
}

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name batterykazakhstan.com;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

}

所以 tomcat 运行良好。但 Wordpress 总是在循环中重定向到欢迎页面。你能帮忙解决这个问题吗?我阅读了相关内容并尝试了建议的解决方案,将 functions.php 放在顶部:

remove_filter('template_redirect', 'redirect_canonical');

但那没有帮助......

编辑1:

端口 8081 将连接到 tomcat 服务器并打开 test.example.com,即 Wordpress 网站

端口 8080 转到 conf.example.com 并打开 tomcat 服务器网站,运行正常。

编辑2: 这里是 Apache 配置:

ServerAdmin webmaster@localhost DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

编辑3:

我这里只有两个 .htaccess 文件:

/var/www/html/wp-content/uploads/wp-clone/.htaccess

内容:

<Files>
        Order allow,deny
        Deny from all
        Satisfy all
</Files>

这里还有一个

/var/www/html/wp-content/plugins/akismet/.htaccess

包含内容:

<IfModule !mod_authz_core.c>
        Order Deny,Allow
        Deny from all
</IfModule>

# Apache 2.4
<IfModule mod_authz_core.c>
        Require all denied
</IfModule>

# Akismet CSS and JS
<FilesMatch "^(form\.js|akismet\.js|akismet\.css)$">
        <IfModule !mod_authz_core.c>
                Allow from all
        </IfModule>

        <IfModule mod_authz_core.c>
                Require all granted
        </IfModule>
</FilesMatch>

# Akismet images
<FilesMatch "^logo-full-2x\.png$">
        <IfModule !mod_authz_core.c>
                Allow from all
        </IfModule>

        <IfModule mod_authz_core.c>
                Require all granted
        </IfModule>
</FilesMatch>

编辑4:

wp-admin 运行正常,只是网站本身。Wordpress 地址 (URL) 和站点地址 (URL) 均设置为http://test.example.com

答案1

让我在这里总结一下解决方案。

在此示例中,我们的作者将构建一个典型的 Nginx-Apache Web 基础架构。Nginx 将用作 Web 代理,将流量重定向到不同的后端服务器。以下是显示关系的简单网络图。

网络图

作者希望将所有 PHP 流量重定向到他的后端 Apache Web 服务器,但由于我们可能在 php 扩展后面有参数,因此以 php 结尾的匹配将失败。我们改用了 location 块:

location ~ \.php

这将匹配任何带有 .php 关键字的 URL,这些 URL 应该能够让作者执行后端 PHP 应用程序(例如 WordPress)。对于全新安装,我们可能还需要检查 .htaccess 文件是否位于 WordPress 的根文件夹中。

参考链接: Nginx 反向代理管理指南WordPress htaccess 文件htaccess WordPress 安全

相关内容