如何将服务器名转发到嵌套的 Apache VirtualHost?
How to forward servername to nested Apache VirtualHost?
- NAS:威联通
- Docker 图片: php:8.0-apache
我有一个 NAS,其中有许多 docker 化的服务,所有域都指向 NAS,Apache 反向代理设置为指向正确的 Docker Container IP:PORT
。
所有这一切都很棒。
我决定通过添加一个容器来托管我所有的玩具网站来挑战自己,但我不知道如何设置反向代理所以 NAS Apache 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-撰写
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>
When enabled, this option will pass the Host: line from the incoming request to the proxied host, instead of the hostname specified in the ProxyPass line.
This option should normally be turned Off. It is mostly useful in special configurations like proxied mass name-based virtual hosting, where the original Host header needs to be evaluated by the backend server.
对于您的配置,类似于:
<VirtualHost *:80>
ServerName sites.mydomain.com
ProxyPreserveHost on
ProxyPass / http://192.168.253.53:9103/
ProxyPassReverse / http://192.168.253.53:9103/
</VirtualHost>
- NAS:威联通
- Docker 图片: php:8.0-apache
我有一个 NAS,其中有许多 docker 化的服务,所有域都指向 NAS,Apache 反向代理设置为指向正确的 Docker Container IP:PORT
。
所有这一切都很棒。
我决定通过添加一个容器来托管我所有的玩具网站来挑战自己,但我不知道如何设置反向代理所以 NAS Apache 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-撰写
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>
When enabled, this option will pass the Host: line from the incoming request to the proxied host, instead of the hostname specified in the ProxyPass line.
This option should normally be turned Off. It is mostly useful in special configurations like proxied mass name-based virtual hosting, where the original Host header needs to be evaluated by the backend server.
对于您的配置,类似于:
<VirtualHost *:80>
ServerName sites.mydomain.com
ProxyPreserveHost on
ProxyPass / http://192.168.253.53:9103/
ProxyPassReverse / http://192.168.253.53:9103/
</VirtualHost>