有人知道如何修复 Nginx + Apache + Wordpress 重定向到 localhost/127.0.0.1 的问题吗?我尝试了很多不同的修复方法,但都没有用。
我可以去http://domain.com/wp-admin很好,可以正常使用那里的一切。但如果我尝试去http://域名.com它重定向到 127.0.0.1。如果我只是通过 Apache 运行,一切也都正常工作。
以下是我的 nginx.conf 的相关部分:
server {
listen 80;
server_name domain.com;
root /var/www/html/wordpress;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://127.0.0.1:8080;
}
}
以下是我的 httpd.conf 的相关部分:
Listen *:8080
ServerName <ip>
<VirtualHost *:8080>
ServerAdmin test@test
DocumentRoot /var/www/html/wordpress
ServerName domain.com
</VirtualHost>
我的 nginx 日志如下所示:
<ip> - - [19/Jun/2012:22:35:35 +0400] "GET / HTTP/1.1" 301 0 "-" "Mozilla/5.0
我的 httpd 日志如下所示:
127.0.0.1 - - [19/Jun/2012:22:24:46 +0400] "GET /index.php HTTP/1.0" 301 - "-"
--
WordPress 地址 (URL) 和站点地址 (URL) 都相同http://domain.com
添加 proxy_set_header Host $host; 导致“此网页存在重定向循环”。
如果我使用它也有效
地点 / { proxy_set_header 主机 $host; 代理密码 http://127.0.0.1:8080; }
但不包括任何到达其他位置的 try_files 语句。
答案1
这是一个老问题,但当我遇到时......
位置 ~ \.php$ {
仅将请求代理到 WordPress 是不够的。基本上,你应该反过来做:
将所有静态文件请求明确发送到 Nginx:
位置 ~ \.(css|js|ico|jpg|jpeg|png|gif|svg|pdf)$ { 尝试文件$uri $uri/ /index.html; }
然后将其余部分代理到 Apache:
地点 / { proxy_set_header 主机 $host; 代理密码 http://127.0.0.1:8080; }
答案2
这可能不是服务器问题
去 http://domain.com/wp-admin/options-general.php 登录仪表板后,确保站点地址(URL)与 WordPress 地址(URL)相同。
答案3
请设置proxy_redirect off;
你的location ~ \.php$
区块。更多信息请查看官方文档代理重定向。