限制所有其他域并仅在 apache 代理配置中提供 ServerName 服务

限制所有其他域并仅在 apache 代理配置中提供 ServerName 服务

在 RHEL 6 中使用 Apache HTTPD 2.2 Web 服务器和基于名称的虚拟托管。尝试为我的网站之一配置代理。 (仅供参考:用于 kibana 仪表板)

<VirtualHost 192.168.12.20:80>
    ServerName admin.kibana.com
    ServerAlias www.admin.kibana.com
    DocumentRoot /opt/kibana
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /opt/kibana>
            Options -Indexes FollowSymLinks -MultiViews
            AllowOverride all
            Order allow,deny
            allow from all
    </Directory>

    ErrorLog logs/admin.error.log
    LogLevel error
    CustomLog logs/admin.log combined

    ProxyRequests off
    ProxyPreserveHost On
    ProxyVia On

    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>

    ProxyPass / http://192.168.12.20:5601/
    ProxyPassReverse / http://192.168.12.20:5601/

</VirtualHost>

在 C:\Windows\System32\drivers\etc\hosts 中拥有本地主机条目,并且能够查看页面和内容,一切正常。

192.168.12.20  admin.kibana.com  www.admin.kibana.com

现在真正的问题来了。即使我尝试浏览以下域,仍然可以提供网页

kibana.com
admin-kibana-com

使用重写规则对我有帮助,但是它停止从后端服务器为实际应用程序提供服务。我可以仅使用代理和虚拟主机配置来执行某些操作吗?请建议。提前致谢。

答案1

如果您只有 1 个虚拟主机,这将用作所有请求的后备。你可以做什么:

  • 拒绝所有其他域的 RewriteRule。如果你的不起作用,也许你弄错了。

  • 另一个默认的 VirtualHost 将始终返回 503

https://httpd.apache.org/docs/current/vhosts/examples.html#purename

相关内容