如何在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 的基本身份验证保护您的网站域路径。