nginx基本配置结构小结

1.配置文件的结构:main + enevts + http + server + location
2.设置用户和组:编译安装配置方式 + 修改配置文件

                             ---1个master process 和 worker process
3.自定义错误页:每个错误码单独处理方式 + 利用在线资源进行处理(跳转) + 更改响应状态码
4.访问控制:(1)权限控制指令:allow + deny

                               ---3个原则:单ip和all + 同块先高 + 多块内高

                     (2)location完成需求匹配:精准匹配 + 正则匹配 + 最大前缀匹配 + 禁用正则匹配
5.日志文件:(1)访问日志:log_format + access_log          --注意开启和关闭的区别,以及另外加的参数
                     (2)错误错误日志:配置记录级别和关闭(error_log /dev/null)
                     (3)日志文件切割:手动切割 + 自动切割(使用脚本 + crontab -e)
6.虚拟主机:(1)基于端口号配置虚拟主机
                     (2)基于ip配置nginx虚拟主机:
                           前提:设置ip别名(两种方法)--1>修改网络配置文件增加ifcfg-eth0:1(device参数增加ifcfg-eth0:1) 重启生效
                                                                          2>通过ifcongfig和route
                                                                          ifconfig eth0:1 10.47.222.60 broadcast 10.47.222.255 netmask 255.255.255.0 up
                                                                          route add -host 10.47.222.60 dev eth0:1
                                                                          为确保系统重启消失,可将其添加到/etc/rc.local文件中
                    (3)基于域名配置虚拟主机:修改hosts文件(注意windows和linux中的区别)+修改nginx.conf文件
                    (4)设置目录列表:配置autoindex指令(在不同块中作用范围不一样,向访问者展现的内容也不一样)
                                                       autoindex_exact_size 精准显示文件大小还是大概文件大小 值为off或on off--kb/mb/gb
                                                       autoindex_localtime最后一次修改文件的时间 值为off或on on--文件的服务器时间
                    (5)子配置文件引入:所有虚拟主机放入nginx.conf使文件过大可读性差,不好维护  

                                                         --include指令用于组织和管理相关配置信息
                            eg:在/home/root/nginx/conf下创建zyf 增加zyf.test.conf(增加一个虚拟机配置) 
                                 在/home/root/nginx/conf下的nginx.conf中http引入:include zyf/zyf.test.conf 或 include zyf/*.conf
7.web服务器搭建:典型的是与php、tomcat、mysql等组成动态网站平台        ---openresty环境(整合nginx与lua脚本)
8.反向代理: (1)注意反向代理与正向代理区别
                                                                                                               后端服务器1 \                                      /用户2
                        1>       客户端--代理服务器--目标服务器                                              反向代理服务器--互联网 --用户1
                                                                                                               后端服务器2 /                                      \用户3
                        2>反向代理将真正的处理放在内网中,提高网络安全性;
                        3>正向代理为在防火墙内的局域网用户提供访问internet,
                             反向代理将防火墙后的服务器提供给internet用户访问,还可以为多台后端服务器提供负载均衡和缓存功能等 
                      (2)采用proxy_pass指令,通常在location块中进行设置

                          (通过设置不同域名的虚拟主机进行测试 test.ng.zyf test.web.zyf)
                      (3)其他常用反向代理指令:如下面配置 
                        proxy_set_header proxy_redirect proxy_connect_timeout proxy_send_timeout proxy_read_timeout等
9.负载均衡:将一台服务器的工作扩展到多台服务器中处理,采用upstream指令
                     4种配置方式:轮询方式(默认)--每个请求按时间顺序逐一分配后台服务器,若有宕机自动剔除
                                            权重方式 --指定轮询权重比例,用于后端服务器性能不均 weight=1; weight=2;---1+2=3
                                                              常用加于后面的状态参数 max_fails fails_timeout backup down
                                             ip_hash方式 --在所有后端服务器前加入ip_hash指令
                                                                    有效解决动态网页存在的session共享问题(eg:netstat -n | grep :80 | wc -l测试)
                                                                    在这个方式下负载均衡列表中不能使用weight和backup指令
                                                                    每个用户ip绑定一个web服务器,实质上无法保证负载均衡,必要条件下使用
                                            利用第三方模块 --方式多种,可以以fair方式为例来测试 
                                                                        (./configure --prefix=xx --with-http_ssl_module --add-module=xx)
                                                                       (make & make install) 把相应模块下载加进去来实现,后面也有这个的学习
10.缓存设置:(1)永久缓存配置:proxy_store指令缓存本地(手动创建和设权限),手动删除 适用于缓存几乎不更改的内容
                       (2)临时缓存配置:proxy_cache指令,采用了md5算法将请求链接进行哈希,根据配置生成缓存文件,保存响应结果
                               在http块中,添加proxy_temp_path(临时目录) + proxy_cache_path(缓存目录,注意里面的参数)
                                                                             应在同一个文件系统中,避免不同文件之间的磁盘i/o消耗
                               在server块中,增加proxy_cache cache_one(区域名称);
                                                              proxy_cache_key $host $uri $is_args $args;
                                                              proxy_cache_valid 200 302 15m;可以为不同状态码设置不同缓存时间
                                                       增加响应头信息,用于获知访问服务器地址与缓存是否成功:
                                                              add_header x-via $server_addr;
                                                              add_header x-cache $upstream_cache_status;(hit miss expired updating等)
                                                       常用缓存配置指令:1>proxy_cache_use_stale增强站点容错能力
                                                                                        2>多磁盘分割缓存 使用nginx,不需要建立一个raid(磁盘阵列)
                                                proxy_cache_path定义了两个缓存(my_cache_hdd1和my_cache_hd22)分属两个不同的硬盘。
                                                split_clients配置部分指定了请求结果一半缓存在my_cache_hdd1中,另一半在my_cache_hdd2
                                                基于$request_uri(请求uri)变量的哈希值决定了每一个请求使用哪一个缓存,
                                                对于指定uri的请求结果通常会被缓存在同一个缓存中。
                                                                                       3>http响应头cache-control:private,no-cache,no-store或set-cookie,                                                                                           不允许代理对资源进行缓存
                                                                                      4>缓存清理指令proxy_cache_purge
                       (3)缓存清理配置:需要借助第三方模块ngx_cache_purge proxy_cache_purge实现缓存清理
                                                        3个规则:缓存区名称与proxy_cache_path一致 + proxy_cache_key规则与之前一致 
                                                                        + 清理缓存的location在server中的所有location之前
                                                          可以利用allow和deny设置特定服务器进行清理工作
1.邮件服务配置:nginx提供了很多邮件服务相关配置,有mail块 下载第三方模块综合后使用,可作为单独练习
12.模块配置应用: (1)可实现高度模块化设计,便于实现功能扩展 共5大模块:核心模块 + 标准http模块 + 可选http模块 + 邮件服务模块 + 第三方模块
                               (2)调试输出echo_nginx-module:用于nginx各大调试
                               (3)查看替换响应状态与替换响应内容 ngx_http_stub_status_module + ng_http_stub_module
                               (4)网页压缩传输:考虑cpu根据实际应用功能决定
                               (5)重写与重定向:重写break与last区别,重定向redirect与permanent区别
                               (6)防盗链配置:配置图片防盗链--referer值判断 valid_referers设置白名单
                                                              配置下载防盗链--secure_link和secure__link_md5指令实现下载地址的加密和实效性
                               (7)配置https网站:ngx_http_ssl_module模块支持
13.nginx配置优化:(1)连接数优化:在main中可加入worker_processes worker_rlimit_nofile 
(可以用apachebench模拟的)            在events中可加入worker_connections multi_accept
                                                              nginx支持多类型连接方式:select、poll、kqueue、epoll 默认是自动选择
                              (2)客户端请求限制:同一个ip发起2000+并发请求--可能是网络攻击--进行防御降低服务器资源消耗

                                        -->部署专业防火墙 或 nginx配置
                                       1>限制同一个ip的并发数:http块中 
                                                            limit_conn_zone $binary_remote_addr zone=perip:10m;
                                                            limit_conn perip 10; (每个ip超过10个并发就503)
                                        2>限制虚拟主机的并发数:http块中 limit_conn_zone $server_name zone=perserver:10m;
                                                                                    server块中 limit_conn perserver 10; 
                                        3>限制响应的传输速率:在http块中使用limit_rate 100k和limit_rate_after 100m;来实现
                             (3)浏览器缓存的优化:etag last-modified自动生成不配置 通过expire指令为静态资源设置过期时间
14.lnmp分布式集群/lamp分布式集群/lnamp分布式集群:以lnmp分布式集群部署(nginx+nginx php+nfs+mysql+memcached)
                                ----基于thinkphp框架开发的电子商务网站:

                                    1>创建mysql独立数据库用户(涉及4.5服务器)
                                    2>上传项目文件到站点服务(涉及3.4.5服务器)
                                    3>配置项目数据库(涉及4.5.7服务器)
                                    4>单一入口配置(动态index.php 在4.5服务器修改nginx.conf增加try_files和rewite指令)
                                    5>利用memcached保存session (涉及3.4.5.9)服务器
                                    6>文件上传下载分离
15.nginx + keepalived高可用方案:评估集群高可用性在于没有单点故障(一台服务器宕机全服务中断)---keepalived
                                                         --配置主、备服务器的keepalived
                                                          --使用keepalived监控其他服务器中keepalived是否正常,也可监控本机中某个服务是否正常
                                                          --使用keepalived实现nginx服务(nginx进程不正常-->重启nginx-->其他备用接管virtual ip)

相关推荐
<p> <strong><span style="font-size:20px;color:#FF0000;">本课程主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者</span></strong> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">1. 包含:<span style="color:#FFFF00;background-color:#FF0000;">项目源码、</span><span style="color:#FFFF00;background-color:#FF0000;">项目文档、数据库脚本、软件工具</span>等所有资料</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">2. 手把手的带你从零开始部署运行本套系统</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">3. 该项目附带的源码资料可作为毕设使用</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">4. 提供技术答疑和远程协助指导</span></strong></span><strong><span style="font-size:18px;"></span></strong> </p> <p> <br /> </p> <p> <span style="font-size:18px;"><strong>项目运行截图:</strong></span> </p> <p> <strong><span style="font-size:18px;">1)系统登陆界面</span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015433522.png" alt="" /><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">2)学生模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015575966.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">3)教师模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016127898.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">4)系统管理员</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016281177.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016369884.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">更多Java毕设项目请关注我的毕设系列课程 <a href="https://edu.csdn.net/lecturer/2104">https://edu.csdn.net/lecturer/2104</a></span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p>
©️2020 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页