🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**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错误: ![3-2-5-1](http://pded8ke3e.bkt.clouddn.com/3-2-5-1.png) ## 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. ``` 修改配置文件: ![3-2-6](http://pded8ke3e.bkt.clouddn.com/3-2-6.png) /etc/rc.d/init.d/nginx restart 前端查看: ![3-2-7](http://pded8ke3e.bkt.clouddn.com/3-2-7.png) ## ngx_http_proxy_module 什么是反向代理? - 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的。 - 而反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器 ![3-2-8](http://pded8ke3e.bkt.clouddn.com/3-2-8.png) 单点的反向代理配置: 首先我们要安装一个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 ``` 修改配置文件: ![3-2-9](http://pded8ke3e.bkt.clouddn.com/3-2-9.png) /etc/rc.d/init.d/nginx restart #重启nginx 多点反向代理配置: 已同样的方法在另外一个节点(192.168.0.21)安装tomcat 修改配置文件: ![3-2-10](http://pded8ke3e.bkt.clouddn.com/3-2-10.png) /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 ``` 前端访问: ![3-2-11](http://pded8ke3e.bkt.clouddn.com/3-2-11.png) ![3-2-12](http://pded8ke3e.bkt.clouddn.com/3-2-12.png) ## 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; ![3-2-13](http://pded8ke3e.bkt.clouddn.com/3-2-13.png) etc/rc.d/init.d/nginx restart #重启nginx 前端页面查看 ![3-2-14](http://pded8ke3e.bkt.clouddn.com/3-2-14.png) 关闭tengine-2 ![3-2-15](http://pded8ke3e.bkt.clouddn.com/3-2-15.png) 前端监控到主机掉线,启动tengine-2后前端监控将恢复正常。