AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 554180
Accepted
flickerfly
flickerfly
Asked: 2013-11-12 08:23:08 +0800 CST2013-11-12 08:23:08 +0800 CST 2013-11-12 08:23:08 +0800 CST

端口 80 到 443 的全局重定向

  • 772

我想设置我的 linux 机器,以便任何访问端口 80 的东西都会被简单地告知询问 443。我希望它与域、IP 或任何可能存在的特定细节无关。如果可以请求端口 80,则应告知不可以。我们在 443 上这样做。

我将在 443 上使用 Apache,因此可以很容易地将其绑定到 80,但不要认为解决方案必须在端口 80 上包含 Apache。

需要明确的是,我正在寻找一种不需要更改虚拟主机的解决方案。我了解可以通过继承传递的全局重定向。这需要虚拟主机更改。我正在寻找更包罗万象且不易出现“糟糕,我忘记了那条线,现在端口 80 正在暴露我的未加密数据”的东西。

你将如何解决这个问题?iptables、apache、带有 netcat 的自定义 shell 脚本和一些让它成为 SSL 的魔法?

apache-2.2
  • 3 3 个回答
  • 18154 Views

3 个回答

  • Voted
  1. Best Answer
    sgtbeano
    2013-11-12T08:39:29+08:002013-11-12T08:39:29+08:00

    尝试将其添加到您的 httpd.conf;

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    

    从这里 - > http://www.sslshopper.com/apache-redirect-http-to-https.html

    这使用了 mod_rewrite,所以请确保您事先安装了它。

    推荐的方法是按照您的说明在每个站点的 VHOST 文件中进行设置,如此处所述;

    http://wiki.apache.org/httpd/RedirectSSL

    但是,Apache wiki 确实更详细地记录了上述重写方法;

    http://wiki.apache.org/httpd/RewriteHTTPToHTTPS

    • 8
  2. Ole Tange
    2013-11-12T08:42:59+08:002013-11-12T08:42:59+08:00

    使用 iptables 将端口 80 重定向到 443 是微不足道的,但根据您的描述,您显然不想在端口 443 上运行 http:您希望人们从 http 重定向到 https。

    您清楚地知道这可以在 Apache 中为每个虚拟主机完成,但您不希望使用它来避免配置错误;否则我会推荐 sgtbeano 的解决方案。

    基于此,我建议您停止在端口 80 上使用 Apache,并在端口 80 上运行另一个执行简单重定向的网络服务器。

    您甚至可以使用不同的配置目录在端口 80 上运行单独的 Apache 实例。这也将避免配置错误,但可能更难维护(没有多少人期望同一主机上的 2 个不同的 Apache 实例具有 2 组不同的配置文件)。在这种情况下,您可以将 sgtbeano 的配置用于端口 80 实例。

    • 4
  3. nandoP
    2013-11-12T08:41:08+08:002013-11-12T08:41:08+08:00

    由于 HTTP 和 HTTPS 是两种不同的协议,您不能简单地将 iptables tcp/80 重定向到 tcp/443,因为 apache 无法理解 tcp/443 上的 HTTP

    所以 HTTP 请求必须到达 apache/nginx/etc,然后在应用层被“重定向”。这将在 nginx 上使用“redirect / https://domain.name/ ”或在 apache 上使用重写规则来完成

    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve