我花了两个晚上试图解决此问题。我使用 Apache 2.4 作为代理,将连接重定向到我的 docker容器(一个简单的wordpress,没什么花哨的)上,监听端口8081
该配置文件有效:
<VirtualHost *:80>
ServerName domain.eu
ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/
</VirtualHost>
但是,内部网址(css文件,js,内联href)无效。这是
的示例根据我的阅读,这是经典的,在this post中已指出。但是,我尝试了几种已知的方法解决此问题(重定向子文件夹,Substitute,RedirectMatch),但似乎并不能解决这一问题。这是我尝试过的一些例子
AddOutputFilterByType SUBSTITUTE text/html
AddOutputFilterByType SUBSTITUTE text/css
AddOutputFilterByType SUBSTITUTE text/js
###### attempt
Substitute "s|http://localhost:8081/|http://domain.eu/wp-includes/|i"
###### attempt
Substitute "s|http://localhost:8081/|http://domain.eu/|i"
###### attempt
RedirectMatch ^/$ /wp-includes/
我什至不确定要了解这些替代规则的工作原理或适用范围(对我来说,基于Perl的正则表达式+不熟悉的概念)。事情似乎so easy with Nginx。我想念什么?您如何处理这个问题?
答案 0 :(得分:0)
我终于找到了。诀窍是使用 location (不确定为什么不起作用)
<VirtualHost *:443>
ServerName new_domain.eu
ProxyPass / http://localhost:8081/
<Location />
AddOutputFilterByType SUBSTITUTE text/html
SetOutputFilter proxy-html
ProxyPassReverse /
Substitute "s|http://localhost:8081/|https://new_domain.eu/|i"
RequestHeader unset Accept-Encoding
</Location>
SSLCertificateFile /etc/letsencrypt/live/new_domain.eu/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/new_domain.eu/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf