我有nginx在前端解释ssl和redirect所有非httpsstream量到https:
server { listen 80; server_name example.com www.example.com; return 301 https://www.example.com$request_uri; }
从那里下一个服务器块解释ssl并传递给清漆:
server { listen 443 ssl spdy; server_name example.com www.example.com; ...<ssl stuff>... location / { proxy_pass http://127.0.0.1:6081; 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_set_header X-Forwarded-Port 443; proxy_set_header Host $host; proxy_redirect off; } }
我已经把所有的东西都清除掉了,以帮助debugging我的问题,因为现在它只是回传给端口8080上的nginx
backend default { .host = "127.0.0.1"; .port = "8080"; }
回到nginx端口8080服务器块:
server { listen 8080; server_name example.com www.example.com; ...<access logs root index stuff>... location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass php; } }
phpvariables指向127.0.0.1:hhvmport上的hhvm上游,后退到127.0.0.1:php-fpmport。
当我试图达到WordPress的pipe理员,我得到一个redirect循环。 我不知道这是否是wordpress问题或服务器设置问题,因为当我从上游移除hhvm并直接进入php-fmp我没有任何问题。 也curl-I https://www.example.com/wp-admin/显示一个302redirect到https://www.example.com/wp-admin/而不是301.另外,如果我从图片取出清漆完全hhvm允许访问wp-admin就好了。 是否添加标题(X-Forwarded等)混淆hhvm,并期望stream量来自443?
/var/log/hhvm/error.log不显示任何东西,除了创buildjit打开redirect日志在nginx和它不帮我。 没有期待它,但它是值得一试。
真的很困惑,这是怎么回事。 我不知道这是否属于wordpress部分,因为删除varnish修复这个问题或绕过WordPress的pipe理部分hhvm也修复了这个问题,似乎更像是一个安装问题。 任何帮助将不胜感激。 运行在Ubuntu 14.04上,如果有任何意义的话。
当您将WordPressconfiguration为将所有不安全的stream量redirect到安全的URL(例如通过.htaccess )时,就会发生这种情况。 会发生什么是第一个请求到达,被剥夺SSL头,并点击WordPress,它注意到连接不安全,并因此发送一个redirect上游到客户端。
如果你不认为WordPress正在这样做,试一试平面PHP(像<?php phpinfo(); ?> )。 如果使用平坦的PHP进行debugging,debugging的最好方法是嗅探点A和点B之间的stream量(查看期望的stream量和现实之间的分离情况),还是直接进入有趣的端口(例如,通过http://host:port/ URI语法,通过修改“hosts”文件和/或使用端口转发),然后一次一个地上传一个服务,直到你得到的数据与你的“ d期望。
原来我需要添加:
fastcgi_param HTTPS on;
在传递到PHP的位置块,现在一切都按预期工作。