如何在Ubuntu12.10上使用Nginx设置HTTP身份验证
红色是什么意思
用户需要输入或自定义的行在本教程中将显示为红色! 其余的大部分应该是可复制粘贴的。
关于 Nginx
Nginx(发音为“engine x”)是一个 HTTP 和反向代理服务器,以及一个邮件代理服务器,由 Igor Sysoev 编写,与 apache 相比,它是一个灵活且轻量级的程序。 官方的 nginx 文档是here。
先决条件
作为先决条件,我们假设您已阅读有关如何设置您的 VPS 的文章并在其上安装了 Nginx。 如果没有,您可以在初始服务器设置文章中找到有关设置VPS的文章,您可以在我们的社区中找到有关安装nginx的更多信息。
第 1 步:Apache 实用程序
我们需要 htpasswd 为使用基本身份验证的用户创建和生成加密。 使用以下命令安装 apache2-utils。
sudo apt-get install apache2-utils
第 2 步:创建用户和密码
在由 nginx 提供服务的网站目录下创建一个 .htpasswd 文件。 以下命令将创建该文件并向其中添加用户和加密密码。
sudo htpasswd -c /etc/nginx/.htpasswd exampleuser
该工具将提示您输入密码。
New password: Re-type new password: Adding password for user exampleuser
htpasswd 文件的结构如下:
login:password
请注意,运行 Nginx 的用户帐户应该可以访问此 htpasswd。
第三步:更新 Nginx 配置
您网站的 nginx 配置文件应位于 /etc/nginx/sites-available/ 下。 为您要保护的域路径添加下面的两个条目。
auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd;
第二行是您网站的 htpasswd 文件的位置。
例如,假设我们的 nginx 配置文件是 /etc/nginx/sites-available/website_nginx.conf,使用 vi 或您选择的任何编辑器打开该文件。
sudo vi /etc/nginx/sites-available/website_nginx.conf
然后将这两行添加到以下路径中:
server { listen portnumber; server_name ip_address; location / { root /var/www/mywebsite.com; index index.html index.htm; auth_basic "Restricted"; #For Basic Auth auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth } }
第 4 步:重新加载 Nginx
为了反映我们网站上的更改,请重新加载 nginx 配置并尝试访问已使用基本身份验证保护的域。
$ sudo /etc/init.d/nginx reload * Reloading nginx configuration...
现在尝试访问您的网站或您已保护的域路径,您会注意到一个浏览器提示,要求您输入登录名和密码。 输入您在创建 .htpasswd 文件时使用的详细信息。 在您输入正确的凭据之前,该提示不允许您访问该网站。
瞧! 您使用 Nginx 的基本身份验证保护您的网站域路径。