我使用 nginx 作为 apache2 的前端。Apache2 将处理所有动态内容。
这是我的主文件,其中 nginx 作为 apache 的前端,并将所有动态页面转发到 apache2:
server {
listen 80;
root /var/www/websites/main/htdocs;
index index.html index.php index.htm;
server_name *removed*;
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:81;
}
location ~ /\.ht {
deny all;
}
}
不幸的是,这会导致 Wordpress 出现重定向循环。
当我使用以下配置时,网站可以正常加载,尽管 nginx 正在处理所有静态和动态内容,这与重点相悖。
server {
listen 80;
root /var/www/websites/main/htdocs;
index index.html index.php index.htm;
server_name *removed*;
location ~* ^.+\.(ico|jpg|jpeg|gif|png|css|txt|js|flv|swf|html|htm|eot|woff|ttf|svg)$
{
access_log off;
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
location / {
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:81;
}
location ~ /\.ht {
deny all;
}
}
使用 Chrome 开发者工具,我发现这是一个 301 重定向循环。我可以毫无问题地访问 wp-admin。
答案1
添加到你的 wordpress 主题 function.php ->
remove_filter('template_redirect', 'redirect_canonical');
答案2
我知道您发布问题已经有一段时间了,但如果您仍然遇到困难......
我遇到了和你一样的问题,并解决了这个问题这篇博文据我所知,您需要使用 ngx_http_upstream_module(文档这里). 在 nginx.conf 中,包含以下几行:
http {
[...]
upstream backend {
ip_hash;
server 127.0.0.1:8081; #or other IP-address:port config - you may add several
}
[...]
server {
[...]
location / {
try_files $uri $uri/ /index.php;
proxy_pass http://backend;
}
[...]
} # END "server"
} # END "http"
答案3
我认为 wordpress 使用某种类型的 seo-friendly-path-style-urls 或重定向,所以你可以
index.php -> /nice-url -> index.php -> /nice-url
由于您的 try_files - 阻止。
如果直接访问 /index.php 会发生什么?你的日志说明了什么?
你应该寻找一个 nginx-worpdress-receipt
答案4
尝试这个:(来源:http://wiki.nginx.org/WordPress)
location / {
try_files $uri $uri/ /index.php?$args;
}
编辑:我还建议通过 FastCGI 使用 PHP,而不是通过 Apache。