【发布时间】:2015-10-08 20:39:30
【问题描述】:
我有一台服务器,我想强制与外界进行 https 通信,但是,服务器上的某些服务需要由本地服务器上的进程通过 http 访问。
我尝试了以下方法:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
当然,在本地服务器上运行的服务无法通过 http 访问。我如何对除 localhost 和 127.0.0.1 之外的所有内容强制执行 https?或者,如果更简单,我有 2 个用于此服务器的外部域 - 我如何仅对 http://sub1.domain1.suffix1 和 http://sub2.domain2.suffix2 以及服务器面向外部的 IP 强制使用 https?
【问题讨论】:
-
请举一个来自 127.0.0.1 的服务示例,我在 https/ssl 站点上做了很多基于服务器的请求,但它们都只是通过 lynx 向站点上的页面请求。我不清楚什么情况会涉及你所说的。如果这两个域是通过 apache vitualhosts 运行的,那么在正常情况下,您将设置每个域的 https,而不是每个服务器,除非您拥有 domain1 或 domain2 的所有子域的全局证书。
-
我通过虚拟机在 Windows azure 上托管,所以我有 2 个域 - 一个由 azure (thedomain.cloudapp.net) 提供,一个我有我的 SSL 证书( mysub.mydomain.com)。没有人应该使用 cloudapp.net 域,但如果他们这样做了,我想确保我正确地将它们重定向到真正的 SSL 域。我正在使用位于盒子上的 parsoid 服务器运行 mediawiki。 Parsoid 只能通过本地机器访问,但它是一个 Web 服务,并且 mediawiki 被配置为通过localhost 访问它。
标签: apache mod-rewrite