- NAS:QNAP
- Docker图像:php:8.0-apache
我有一个NAS,它有许多码头服务,域都指向NAS,Apache反向代理设置为直接指向正确的Docker Container IP:PORT
。
所有这些都很棒。
我决定挑战自己,添加一个容器来托管我所有的玩具网站,但我不知道如何设置反向代理,所以NASApache VirtualHost
中的ServerName
被转发到容器的Apache VirtualHost
,以直接指向正确的文件夹。
该站点位于NAS/share/dev/web/sites
上的一个文件夹中。
使用下面的配置,我可以浏览到http://sites.mydomain.com/sites
,而我希望能够访问http://sites.mydomain.com
。
我认为我的NAS Apache VirtualHost
没有转发servername
,所以Docker Container Apache VirtualHost
不知道如何过滤流量。
我尝试了许多不同的apache设置,但都没有成功,有人能指出这一点吗?
docker compose
version: '3.8'
services:
php-apache-environment:
container_name: php-apache
image: php:8.0-apache
volumes:
- /share/dev/web:/var/www/html/
- /share/dev/docker-composer/php/apache/apache2.conf:/etc/apache2/apache2.conf
- /share/dev/docker-composer/php/apache/custom.conf:/etc/apache2/sites-available/custom.conf
ports:
- 9103:80
NAS Apache VirtualHost
<VirtualHost *:80>
ServerName sites.mydomain.com
ProxyPass / http://192.168.253.53:9103/
ProxyPassReverse / http://192.168.253.53:9103/
</VirtualHost>
Docker容器Apache VirtualHost
<VirtualHost *:80>
ServerName sites.mydomain.com
ServerAdmin webmaster@name
DocumentRoot /var/www/html/sites
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
您想要ProxyPreserveHost
启用时,此选项将从传入请求向代理主机传递Host:行,而不是在ProxyPass行中指定的主机名。
此选项通常应关闭。它在特殊配置中非常有用,如基于代理的大量名称的虚拟主机,其中原始主机标头需要由后端服务器评估。
对于您的配置,类似于:
<VirtualHost *:80>
ServerName sites.mydomain.com
ProxyPreserveHost on
ProxyPass / http://192.168.253.53:9103/
ProxyPassReverse / http://192.168.253.53:9103/
</VirtualHost>