反向代理背后的WordPress:未在Safari和IE中设置会话cookie

mar*_*sze 4 apache safari wordpress reverse-proxy session-cookies

我有一个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>
Run Code Online (Sandbox Code Playgroud)

该博客工作正常,我可以登录作为管理员,但是当试图保存设置或删除插件(和wp_redirect发生),我重定向到登录页面,因为WordPress的显然没有找到/接受会话cookie,以及该行动未完成.

因此,我添加了这一行:

    ProxyPassReverseCookiePath / http://192.168.101.11/blog/
Run Code Online (Sandbox Code Playgroud)

(请参阅Apache代理cookie仅适用于第一个应用程序)

这似乎解决了这个问题.但是,我现在注意到,使用此设置,登录根本不起作用,但仅限于Safari和IE(在Opera,Firefox,Chrome中工作得很好).我只是再次被重定向到登录页面.

一些其他信息:

  • 会话cookie和wordpress_test_cookie管理部分根本不是在Safari中创建的,只是类似的"__uc*"等等(对于博客本身).如果没有ProxyPassReverseCookiePath-entry,他们正在创建的.
  • 我为第三方网站(在两个浏览器中)激活了cookie,但这并没有解决问题.
  • 我用这种方式配置了WP-cookies:

WP-config.php文件

define('COOKIE_DOMAIN', '.blog.domain.com');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
define('ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
Run Code Online (Sandbox Code Playgroud)

mar*_*sze 6

解决了它:

我在cookie路径配置中犯了一个小错误.它一定要是:

ProxyPassReverseCookiePath http://192.168.101.11/blog http://blog.domain.com
Run Code Online (Sandbox Code Playgroud)