# 7. auth\_basic 模塊使用
#### 1. 介紹
在這一篇文章[nginx之編譯第三方模塊(六)](http://www.rails365.net/articles/2015-11-04-nginx-zhi-bian-yi-di-san-fang-mo-kuai-liu)中介紹了如何編譯模塊,而我們演示了如何編譯[nginx-module-vts](https://github.com/vozlt/nginx-module-vts)這個監控nginx服務器運行情況的模塊。只要用戶在瀏覽器輸入`http://your_ip/status`,就可以訪問監控頁面。這樣很不安全,因為任何人都可以訪問這個頁面。如果有一個方法能讓訪問這個頁面的時候輸入用戶名和密碼,那就好了。而nginx的源碼提供了[ngx\_http\_auth\_basic\_module](http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html)這個模塊,它可以來解決這個問題。
`ngx_http_auth_basic_module`它提供了最基本的http認證,這是http協議支持的,它會彈出一個框讓你輸入用戶名和密碼,只有用戶名和密碼輸入正確了才能訪問,這樣就能防止`/status`被任何人訪問了。
#### 2. 使用
這個模塊是默認就編譯進nginx的,所以可以直接拿來使用。
首先我們得有一個機制是來存放用戶名和密碼,`ngx_http_auth_basic_module`是使用文件作為存儲介質的,用戶名是明文存儲,而密碼是加密之后再存儲,這樣在認證框輸入的用戶名和密碼必須和文件的信息匹配才能認證成功。
我們用`htpasswd`這個命令來生成存放用戶名和密碼的文件,所以需要先安裝它。
```
$ sudo apt-get install apache2-utils
```
我們先添加第一個用戶`hfpp2012`。
```
$ sudo htpasswd -c /etc/nginx/.htpasswd hfpp2012
New password:
Re-type new password:
Adding password for user hfpp2012
```
鍵入兩遍相同的密碼就可以了。
`-c`參數表示會創建`/etc/nginx/.htpasswd`這個文件,以后再添加用戶就不用指定這個參數了,比如添加`yinsigan`用戶。
```
$ sudo htpasswd /etc/nginx/.htpasswd yinsigan
```
現在我們需要在配置文件中打開http basic auth認證。
```
server {
...
location /status {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
```
這樣就可以了,看下效果圖。

完結。