如何配置Apache以在同一台机器上使用FE和BE?
问题描述:
我需要配置一个Apache服务器来为同一台机器上的前端和后端(都是php)提供服务。 下面是要考虑:如何配置Apache以在同一台机器上使用FE和BE?
- 后端是RESTful的和API由防火墙只允许本地主机访问安全的(仅作为临时的解决方案,直到API令牌被实现)。
- 前端与后端位于同一台机器上,但在一段时间内将移至另一台服务器。
- 静态内容将来自后端机器
我目前的配置看起来交付像以下:
NameVirtualHost *:80 NameVirtualHost *:81 ServerName www.myServer.de ServerAdmin [email protected] DocumentRoot /data/fe/public Options FollowSymLinks AllowOverride None Order Deny,Allow Deny from All Options FollowSymLinks AllowOverride AuthConfig Order allow,deny allow from all RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule^index.php [L] ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog ${APACHE_LOG_DIR}/error_fe.log CustomLog ${APACHE_LOG_DIR}/access_fe.log combined ServerAdmin [email protected] DocumentRoot /data/be/public Options FollowSymLinks AllowOverride None Order Deny,Allow Deny from All Options FollowSymLinks AllowOverride AuthConfig Order allow,deny allow from all RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule^index.php [L] ErrorLog ${APACHE_LOG_DIR}/error_be.log CustomLog ${APACHE_LOG_DIR}/access_be.log combined
如何配置后端提供静态内容,而无需访问限制,但保持固定的API 。或者它可以通过应用程序提供静态内容吗?
我使用
- 的Debian 8.1
- 的Apache 2.4
答
我结束了配置反向代理交付静态内容。我添加以下行到我的虚拟主机前端:
ProxyPreserveHost On
ProxyPass /images http://<BE-IP>:81/files/images
ProxyPassReverse /images http://<BE-IP>:81/files/images
该配置下,后端仍然受到来自外部的请求防火墙森严,但允许FE请求图像。
我投票结束这个问题作为题外话,因为它不是一个编程问题。这可能会更好在unix.stackexchange.com或超级用户 –