【问题标题】:Simplest way to get MediaWiki to require HTTPS on all pages?让 MediaWiki 在所有页面上要求 HTTPS 的最简单方法是什么?
【发布时间】:2012-06-15 09:23:59
【问题描述】:

我需要安装 MediaWiki 以要求使用 https(并拒绝正常的 http)。我花了2个小时寻找。设置$wgServer不起作用,关闭httpd.conf中的80端口也不起作用。

我的 wiki 安装在 Apache 服务器上运行。

【问题讨论】:

  • 告诉 Apache 不要监听 80 端口会起作用,如果你做得对的话。
  • 另外,你运行的是什么操作系统?

标签: apache https mediawiki


【解决方案1】:

我刚刚在 Ubuntu 14 上完成了这个(今天第一次,所以可能有更好的方法!)通过设置

$wgServer = "//myhostname.com/mediawiki";

这使服务器名称“与协议相关”,因此它适用于 HTTP 或 HTTPS。不过,您也许可以将其设置为 https://...。

然后配置apache2将所有HTTP流量重定向到HTTPS:

编辑默认 SSL 配置(假设您只是使用默认站点):

sudo vim /etc/apache2/sites-available/default-ssl.conf

阅读类似:

# Redirect HTTP to HTTPS
<VirtualHost *:80>
     ServerAdmin admin@example.com
     ServerName example.com

     Redirect permanent / https://example.com/
</VirtualHost>

# Normal HTTPS config for default site
<VirtualHost *:443>
     SSLEngine On
     SSLCertificateFile /etc/apache2/ssl/apache.pem
     SSLCertificateKeyFile /etc/apache2/ssl/apache.key

     ServerAdmin admin@example.com
     ServerName example.com
     DocumentRoot /var/www/html/
     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

启用默认 SSL 站点(如果您尚未启用)(这会创建从启用站点到可用站点的链接)

sudo a2ensite default-ssl

这假设您已经获得了一个 SSL 证书(我生成了一个自签名证书),该证书已放置在上面配置中引用的 /etc/apache2/ssl/apache.pem/etc/apache2/ssl/apache.key 中。

终于让 apache 使用新的配置:

sudo service apache2 restart

(或者reload 可能就足够了)

【讨论】:

  • 这个答案会如何改变如果我们希望example.com 指向www.example.com然后然后让一切都变成HTTPS? (我尝试从类似的问题和答案中设置相同的配置。我认为它是正确的,但是 MediaWiki 登录被破坏(其他一切都可以)。现在我在这里尝试“默认为 Mediawiki 启用 HTTPS”)。跨度>
  • 我想知道为什么这种“协议相对”语法不是默认的!谢谢你今天救了我:)
【解决方案2】:

我的回答假设您已经让 Apache 在端口 443 上侦听 https 流量。如果不是这样,您需要先进行设置。该过程将根据您运行的操作系统而有所不同。


您想在 Apache 中执行此操作。在我的 Ubuntu 系统上,有一个文件 /etc/apache2/ports.conf 包含以下行:

Listen 80

您将拥有一个包含该行的类似配置文件。删除它,别忘了重启 Apache。


实现此目的的另一种方法是在您的 MediaWiki 目录中使用.htaccess file,它允许更复杂的 Apache 配置,允许 HTTP 访问站点的某些部分。试试这个:

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

【讨论】:

  • 这是否确保wiki不会将登录/搜索表单设置为发布到http?
  • > 另一种方法来完成这个... // 这对我来说非常有效。
  • 7 年后...重定向 (RewriteRule) 绝对是更好的方法。禁用端口 80 不是一个好主意,因为您希望人们能够在没有https:// 的情况下输入域名。
【解决方案3】:

鉴于您的网络服务器通常设置为支持 https,请在 MediaWiki 的 LocalSettings.php 配置文件中插入或更新以下行:

$wgForceHTTPS = true;

这会将所有使用 http 的查询重定向到 https,并且是 Web 服务器配置中重定向规则的替代方法。

另见:

【讨论】:

  • 我认为这是最好的答案。另外,请确保将 $wgServer 设置为使用“https://”。如果 $wgServer 以“http://”开头,则会抛出异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 2010-09-12
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
相关资源
最近更新 更多