**Nginx相關資料請參閱[Nginx中文文檔](http://tengine.taobao.org/nginx_docs/cn/docs/)**
# Nginx模塊
Nginx模塊共有下面的這些:
- ngx_http_core_module
- ngx_http_access_module
- ngx_http_addition_module
- ngx_http_auth_basic_module
- ngx_http_autoindex_module
- ngx_http_browser_module
- ngx_http_charset_module
- ngx_http_dav_module
- ngx_http_empty_gif_module
- ngx_http_fastcgi_module
- ngx_http_flv_module
- ngx_http_geo_module
- ngx_http_geoip_module
- ngx_http_gunzip_module
- ngx_http_gzip_module
- ngx_http_gzip_static_module
- ngx_http_headers_module
- ngx_http_image_filter_module
- ngx_http_index_module
- ngx_http_limit_conn_module
- ngx_http_limit_req_module
- ngx_http_log_module
- ngx_http_map_module
- ngx_http_memcached_module
- ngx_http_mp4_module
- ngx_http_perl_module
- ngx_http_proxy_module
- ngx_http_random_index_module
- ngx_http_realip_module
- ngx_http_referer_module
- ngx_http_rewrite_module
- ngx_http_secure_link_module
- ngx_http_split_clients_module
- ngx_http_ssi_module
- ngx_http_ssl_module
- ngx_http_sub_module
- ngx_http_upstream_module
- ngx_http_userid_module
- ngx_http_xslt_module
- ngx_mail_core_module
- ngx_mail_pop3_module
- ngx_mail_imap_module
- ngx_mail_smtp_module
- ngx_mail_auth_http_module
- ngx_mail_proxy_module
- ngx_mail_ssl_module
# 模塊使用舉例
在這里我只介紹其中的四個模塊,其他模塊用法請參閱[Nginx中文文檔](http://tengine.taobao.org/nginx_docs/cn/docs/)
## ngx_http_access_module
模塊 ngx_http_access_module 允許限制某些IP地址的客戶端訪問。也可以通過 密碼來限制訪問。 使用 satisfy 指令就能同時通過IP地址和密碼來限制訪問。
配置范例:
location / {
deny 192.168.0.21;
allow 192.168.0.0/24;
deny all;
}
規則按照順序依次檢測,直到匹配到第一條規則。 在這個例子里,IPv4的網絡中只有192.168.0.0/24允許訪問,但 192.168.0.21除外, 在規則很多的情況下,使用 ngx_http_geo_module 模塊變量更合適。
192.168.0.21訪問nginx返回403錯誤:

## ngx_http_auth_basic_module
模塊ngx_http_auth_basic_module 允許使用“HTTP基本認證”協議驗證用戶名和密碼來限制對資源的訪問。也可以通過 地址來限制訪問。 使用satisfy 指令就能同時通過地址和密碼來限制訪問。
使用這個模塊需要httpd htpasswd的支持,所以我們先安裝httpd
```
[root@tengine-1 conf]# yum -y install httpd
[root@tengine-1 conf]# htpasswd -bcm /var/user yjscloud 123456 #創建訪問前端訪問的用戶和密碼
Adding password for user yjscloud
[root@tengine-1 conf]# cat /var/user
yjscloud:$apr1$G1Cf7JMP$cw0.ofGQ6w7dbaMqDJACs.
```
修改配置文件:

/etc/rc.d/init.d/nginx restart
前端查看:

## ngx_http_proxy_module
什么是反向代理?
- 通常的代理服務器,只用于代理內部網絡對Internet的連接請求,客戶機必須指定代理服務器,并將本來要直接發送到Web服務器上的http請求發送到代理服務器中由代理服務器向Internet上的web服務器發起請求,最終達到客戶機上網的目的。
- 而反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器

單點的反向代理配置:
首先我們要安裝一個tomcat,將`apache-tomcat-7.0.61.tar.gz`安裝包上傳到/opt目錄下,需要下載tomcat的小伙伴[請點擊這里](https://pan.baidu.com/s/1SmorIH2k4IieKULAoeHdjw)
```
yum -y install java
cd /opt
tar zxf apache-tomcat-7.0.61.tar.gz
sh /opt/apache-tomcat-7.0.61/bin/startup.sh
```
修改配置文件:

/etc/rc.d/init.d/nginx restart #重啟nginx
多點反向代理配置:
已同樣的方法在另外一個節點(192.168.0.21)安裝tomcat
修改配置文件:

/etc/rc.d/init.d/nginx restart #重啟nginx
修改網頁內容
```
[root@tengine-1 ]# cd /opt/apache-tomcat-7.0.61/webapps/ROOT/
[root@tengine-1 ]# echo "192.168.0.19~~~tomcat-111111" > index.jsp
```
```
[root@tengine-2 ]# cd /opt/apache-tomcat-7.0.61/webapps/ROOT/
[root@tengine-2 ]# echo "192.168.0.21~~~tomcat-222222" > index.jsp
```
修改后分別在兩臺機子上重啟tomcat
```
sh /opt/apache-tomcat-7.0.61/bin/shutdown.sh
sh /opt/apache-tomcat-7.0.61/bin/startup.sh
```
前端訪問:


## ngx_http_upstream_module
這是tengine新添加的健康檢查模塊
在nginx.conf添加如下配置:
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;

etc/rc.d/init.d/nginx restart #重啟nginx
前端頁面查看

關閉tengine-2

前端監控到主機掉線,啟動tengine-2后前端監控將恢復正常。
- 獻給我的朋友們
- 一、個人對學習的看法
- 二、運維技能圖譜
- 三、運維常用技能
- 3.1 Vim(最好用的編輯器)
- 3.2 Nginx & Tengine(Web服務)
- 1. Nginx介紹和部署
- 2. Nginx配置解析
- 3. Nginx常用模塊
- 4. Nginx 的session 一致性問題
- 3.3 Tomcat(Web中間件)
- 3.4 Keepalived(負載均衡高可用)
- 3.5 Memcache(分布式緩存)
- 3.6 Zookeeper(分布式協調系統)
- 3.7 KVM(開源虛擬化)
- 1. 虛擬化介紹
- 2. KVM基礎
- 3. 設置VNC和時間同步
- 4. kvm虛擬機快照備份
- 5. kvm虛擬機在線擴展磁盤
- 6. kvm虛擬機靜態遷移
- 7. kvm虛擬機動態遷移
- 8. kvm虛擬機存儲池配置
- 9. cpu添加虛擬化功能
- 3.8 GitLab(版本控制)
- 3.8.1 GitLab安裝與漢化
- 3.9 Jenkins(運維自動化)
- 3.10 WAF(Web防火墻)
- 3.10.1初探WAF
- 四、常用數據庫
- 4.1 MySQL(關系型數據庫)
- 1. MySQL源碼安裝
- 4.2 Mongodb(適用與大數據分析的數據庫)
- 4.3 Redis(非關系數據庫)
- 五、自動化運維工具
- 5.1 Cobbler(系統自動化部署)
- 5.2 Ansible(自動化部署)
- 5.3 Puppet(自動化部署)
- 5.4 SaltStack(自動化運維)
- 六、存儲
- 6.1 GFS(文件型存儲)
- 6.2 Ceph(后端存儲)
- 七、運維監控工具
- 7.1 對監控的理解
- 7.2 Zabbix(運維監控)
- 7.2.1 Zabbix簡介
- 7.2.2 Zabbix服務部署
- 1. Zabbix服務端部署
- 2. Zabbix客服端部署
- 3. 配置前端展示
- 4. zabbix告警配置
- 7.2.3 Zabbix監控服務
- 1. 監控網絡設備
- 2. 自定義Nginx監控
- 7.3 云鏡(安全監控)
- 7.4 ELK(日志收集展示)
- 八、運維云平臺
- 8.1 OpenStack(開源云操作系統)
- 8.1.1 OpenStack簡介
- 8.1.2 實驗架構設計
- 8.1.3 集群環境準備
- 8.1.4 controller節點部署
- 1. 安裝Mariadb Galera Cluster集群
- 2. 安裝RabbitMQ Cluster集群
- 3. 安裝Pacemaker
- 4. 安裝HAProxy
- 5. 安裝配置Keystone
- 6. 安裝配置glance
- 1. 制作鏡像模板
- 7. 安裝配置nova
- 8. 安裝配置neutron
- 1. 配置虛擬機網絡
- 9. 安裝Dashboard
- 10. 安裝配置cinder
- 8.1.5 compute節點部署
- 1. 安裝相關軟件包
- 2. 安裝Neutron
- 3. 配置cinder
- 4. 創建第一個虛擬機
- 8.1.6 OpenStack報錯處理
- 1. cinder僵尸卷刪除
- 8.1.7 快速孵化虛擬機方案
- 8.1.8 Kolla容器化部署OpenStack
- 1. 單點部署
- 2. 多節點部署
- 8.2 Tstack(騰訊云平臺)
- 8.3 K8s(微服務容器化)
- 九、運維編程技能
- 9.1 Shell(運維必會語言)
- 9.2 Python(萬能的膠水語言)
- 十、Devops運維
- 10.1 理念
- 10.2 Devops實戰