Don*_*nai 5 php apache wordpress mod-proxy docker
我的环境是,可以通过 访问在 apache 上运行 wordpress 的 docker 容器ip:port
。主机环境有一个 apache 实例,它重定向使用 mod 代理的流量http://myurl
(localhost:port
我与同一主机中的其他 docker 容器进行了相同的设置,工作正常)。但是访问http://myurl
(更改 WordPress 配置后)只会将您重定向到 localhost(在 WordPress 容器的 apache 日志中,我可以看到它给出了 301 来重定向您)。
仅当您访问基本网址时才会出现问题。(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>
Run Code Online (Sandbox Code Playgroud)
这有效(在wp-config.php
):
define('WP_HOME','http://8.8.8.8:8080');
define('WP_SITEURL','http://8.8.8.8:8080');
Run Code Online (Sandbox Code Playgroud)
这不
define('WP_HOME','http://my.url.com');
define('WP_SITEURL','http://my.url.com');
Run Code Online (Sandbox Code Playgroud)
这些是我启用的 WordPress 插件。但请注意,我也相应地更改了他们的配置。
更新:这似乎在一定程度上解决了问题。
define('WP_HOME','http://8.8.8.8:8080');
define('WP_SITEURL','http://my.url.com');
Run Code Online (Sandbox Code Playgroud)
一些组件(主页按钮等)仍然可用,ip:port
但系统可以正常工作。
事实证明,问题在于重定向发生时标头被剥离。我通过添加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>
Run Code Online (Sandbox Code Playgroud)