# 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)這個監(jiān)控nginx服務(wù)器運行情況的模塊。只要用戶在瀏覽器輸入`http://your_ip/status`,就可以訪問監(jiān)控頁面。這樣很不安全,因為任何人都可以訪問這個頁面。如果有一個方法能讓訪問這個頁面的時候輸入用戶名和密碼,那就好了。而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協(xié)議支持的,它會彈出一個框讓你輸入用戶名和密碼,只有用戶名和密碼輸入正確了才能訪問,這樣就能防止`/status`被任何人訪問了。
#### 2. 使用
這個模塊是默認就編譯進nginx的,所以可以直接拿來使用。
首先我們得有一個機制是來存放用戶名和密碼,`ngx_http_auth_basic_module`是使用文件作為存儲介質(zhì)的,用戶名是明文存儲,而密碼是加密之后再存儲,這樣在認證框輸入的用戶名和密碼必須和文件的信息匹配才能認證成功。
我們用`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`參數(shù)表示會創(chuàng)建`/etc/nginx/.htpasswd`這個文件,以后再添加用戶就不用指定這個參數(shù)了,比如添加`yinsigan`用戶。
```
$ sudo htpasswd /etc/nginx/.htpasswd yinsigan
```
現(xiàn)在我們需要在配置文件中打開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;
}
}
```
這樣就可以了,看下效果圖。

完結(jié)。
- 介紹
- 安裝
- 1. 基本介紹和配置文件語法
- 2. 反向代理
- 3. gzip 壓縮提升網(wǎng)站性能
- 4. 在線升級
- 5. 監(jiān)控工具 ngxtop
- 6. 編譯第三方模塊
- 7. auth_basic 模塊使用
- 8. 日志分析工具
- 9. 用 nginx 搭建谷歌鏡像網(wǎng)站
- 10. 自制啟動腳本
- 11. 日志切割
- 12. 作為負載均衡器
- 13. 開啟 debug 模式
- 14. gzip static 模塊探索
- 15. 安裝最新 nginx 的另類方法
- 16. 使用 acme.sh 安裝 Let’ s Encrypt 提供的免費 SSL 證書
- 17. 給 GitLab 應(yīng)用加上 https
