反向代理背后的WordPress:未在Safari和IE中设置会话cookie
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反向代理背后的WordPress:未在Safari和IE中设置会话cookie相关的知识,希望对你有一定的参考价值。
我有一个WordPress博客在反向代理(Apache)后面运行。
httpd.vhosts.conf:
<VirtualHost *:80>
ServerName blog.domain.com:80
ServerAlias www.blog.domain.com
ProxyPass / http://192.168.101.11/blog/
ProxyPassReverse / http://192.168.101.11/blog/
</VirtualHost>
博客工作正常,我可以作为管理员登录,但当尝试保存设置或删除插件(并发生wp_redirect)时,我被重定向到登录页面,因为wordpress显然没有找到/接受会话cookie,并且该行动未完成。
因此,我添加了这一行:
ProxyPassReverseCookiePath / http://192.168.101.11/blog/
(见Apache proxy cookies works only with the first app)
这似乎解决了这个问题。但是,我现在已经注意到,使用此设置,登录根本不起作用,但仅限于Safari和IE(在Opera,Firefox,Chrome中工作得很好)。我只是再次被重定向到登录页面。
一些其他信息:
- 管理部分的会话cookie和
wordpress_test_cookie
根本不是在Safari中创建的,只有像"__uc*"
等那样(对于博客本身)。如果没有ProxyPassReverseCookiePath
条目,它们就会被创建。 - 我为第三方网站(在两个浏览器中)激活了cookie,但这并没有解决问题。
- 我用这种方式配置了WP-cookies:
WP-config.php文件
define('COOKIE_DOMAIN', '.blog.domain.com');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
define('ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
解决了它:
我在cookie路径配置中犯了一个小错误。它一定要是:
ProxyPassReverseCookiePath http://192.168.101.11/blog http://blog.domain.com
ProxyPassReverseCookiePath
执行cookie的path
属性的转换。此属性仅包含路径,因此将完整URL传递给指令将不起作用。如果没有ProxyPassReverseCookiePath
指令,我不确定为什么它不起作用,但我认为Wordpress不尊重你设置的COOKIEPATH
。
正确的配置是:
ProxyPassReverseCookiePath /blog/ /
ProxyPassReverseCookieDomain 192.168.101.11 .blog.domain.com
这将改变你的cookie的path
和domain
,从而使你在wp-config.php
中所做的设置过时了。
以上是关于反向代理背后的WordPress:未在Safari和IE中设置会话cookie的主要内容,如果未能解决你的问题,请参考以下文章