我如何错误地为我的WordPress站点配置了基本身份验证?

时间:2021-01-12 作者:mholder

我已经在一个裸露的Ubuntu20-04盒子上安装了Wordpress,如下所示Digital Ocean\'s guide.现在我想用密码保护整个网站,但由于我找不到任何保护上传文件和图像的插件,我正在尝试使用basic auth。

所以我创建了一个。htpasswd文件

-rw-r--r-- 1 root root 132 Jan 12 00:07 /etc/wordpress/.htpasswd
我编辑了/var/www/mysite。com/。htaccess(用真实域代替mysite)阅读:

# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/wordpress/.htpasswd
require valid-user
但该网站仍然可以很好地加载,没有我想要的丑陋的登录提示
...what am I doing wrong?

基本身份验证的替代解决方案是受欢迎的,但我认为这似乎是保护上传内容的最简单途径。(这是为了为该街区的囚犯提供有关公寓大楼的信息,有些事情(如会议记录)是半机密的——如果人们每次必须登录一次才能访问该网站,我不介意)

2 个回复
SO网友:mholder

确定编辑默认ssl。形态如所述here (或者在我的示例中是/etc/apache2/sites enabled/mysite.com le ssl.conf),将身份验证设置添加到虚拟主机块的末尾works fine now.所以现在是:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName mysite.com
    ServerAlias www.mysite.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/mysite.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/mysite.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mysite.com/privkey.pem
    <Directory "/var/www/mysite.com">
        AuthType Basic
        AuthName "Restricted Area"
        AuthUserFile /etc/wordpress/.htpasswd
        require valid-user
    </Directory>
</VirtualHost>
</IfModule>
本页还介绍了如何使用。通过修改AllowOverride访问文件。

我可能应该对guide I originally followed

SO网友:MrWhite

我有<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> 在我的/etc/apache2/apache2.conf 这大概就是我错的地方?

如果那是唯一AllowOverride 那肯定是个问题。然而,这也意味着.htaccess 文件根本没有被处理,您也没有使用WordPress permalinks。

然而AllowOverride None 涵盖父级的指令/var/www/ 如果您具有重写AllowOverride All (或类似)指令,涵盖/var/www/mysite.com/ 相关目录中的目录<VirtualHost> 容器-这将是更常见的配置。您拒绝访问父目录,并允许访问特定子目录。

<Directory /var/www/mysite.com/>
    Options -Indexes
    AllowOverride All
    Require all granted
</Directory>
Options -Indexes 禁用在父配置中启用的目录列表(mod\\u autoindex)。