我为一个网站安装了 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 安全