wordpress+docker+apache mod 代理重定向到 http://localhost
wordpress+docker+apache mod proxy redirects to http://localhost
我的环境是,可以通过 ip:port
访问 apache 上的 docker 容器 运行 wordpress。主机环境有一个 apache 实例,它使用 mod 代理将来自 http://myurl
的流量重定向到 localhost:port
(我与同一主机中的其他 docker 容器进行了相同的设置这工作正常)。但是访问 http://myurl
(在更改 wordpress 配置之后)只会将您重定向到本地主机(在 wordpress 容器的 apache 日志中我可以看到它给出 301 来重定向您)。
只有当您访问基地 url 时才会出现问题。 (http://myurl/wp-login.php 有效)
主机 Apache 配置:
<VirtualHost *:80>
ServerName my.url.com
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
这有效(在 wp-config.php
):
define('WP_HOME','http://8.8.8.8:8080');
define('WP_SITEURL','http://8.8.8.8:8080');
这不是
define('WP_HOME','http://my.url.com');
define('WP_SITEURL','http://my.url.com');
这些是我启用的 wordpress 插件。但请注意,我也相应地更改了他们的配置。
- wp-support-plus
- 管理员自定义登录
更新:
这似乎在一定程度上解决了问题。
define('WP_HOME','http://8.8.8.8:8080');
define('WP_SITEURL','http://my.url.com');
某些组件(主页按钮等)仍然适用于 ip:port
,但系统可以正常工作。
原来问题是 headers 在重定向发生时被剥离了。我通过将 ProxyPreserveHost On
添加到主机 apache 配置来修复此问题。更改后的文件现在看起来像这样。
主机 Apache 配置:
<VirtualHost *:80>
ServerName my.url.com
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPreserveHost On # needed if you need to pass the original host header
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
我的环境是,可以通过 ip:port
访问 apache 上的 docker 容器 运行 wordpress。主机环境有一个 apache 实例,它使用 mod 代理将来自 http://myurl
的流量重定向到 localhost:port
(我与同一主机中的其他 docker 容器进行了相同的设置这工作正常)。但是访问 http://myurl
(在更改 wordpress 配置之后)只会将您重定向到本地主机(在 wordpress 容器的 apache 日志中我可以看到它给出 301 来重定向您)。
只有当您访问基地 url 时才会出现问题。 (http://myurl/wp-login.php 有效)
主机 Apache 配置:
<VirtualHost *:80>
ServerName my.url.com
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
这有效(在 wp-config.php
):
define('WP_HOME','http://8.8.8.8:8080');
define('WP_SITEURL','http://8.8.8.8:8080');
这不是
define('WP_HOME','http://my.url.com');
define('WP_SITEURL','http://my.url.com');
这些是我启用的 wordpress 插件。但请注意,我也相应地更改了他们的配置。
- wp-support-plus
- 管理员自定义登录
更新: 这似乎在一定程度上解决了问题。
define('WP_HOME','http://8.8.8.8:8080');
define('WP_SITEURL','http://my.url.com');
某些组件(主页按钮等)仍然适用于 ip:port
,但系统可以正常工作。
原来问题是 headers 在重定向发生时被剥离了。我通过将 ProxyPreserveHost On
添加到主机 apache 配置来修复此问题。更改后的文件现在看起来像这样。
主机 Apache 配置:
<VirtualHost *:80>
ServerName my.url.com
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPreserveHost On # needed if you need to pass the original host header
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>