Nginx开发(二)--配置虚拟机 2019-03-30 程序之旅 4 条评论 6592 次阅读 使用源码进行安装的nginx指定了安装路径,在/usr/local/nginx,进入到根目录后可以看到是个文件夹:conf、html、logs和sbin。 - conf:配置文件目录 - html:放静态文件的目录 - logs:日志目录 - sbin:文件启动项 先进入到配置文件目录conf中,编辑nginx.conf。 ###虚拟主机 开始使用nginx,首先了解一些概念 虚拟主机:服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,同一台主机上的虚拟主机之间是完全独立的。 从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。 删除nginx.conf中多余的配置,留下http配置,在底下导入虚拟主机配置文件 ![nginx 2-1.png](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/usr/uploads/2019/03/3650100677.png) server { #监听端口 80 listen 80; #监听域名abc.com; server_name abc.com; location / { # 根目录路径 root html/abc; # 默认跳转到index.html页面 index index.html; } } ###location的规则 正则匹配: - =: 严格的匹配 - ~:使用正则 - ~*:正则不区分大小写 - ^~:正则取反 普通location - =: 精准匹配 - ^~:正则取反 正则location - ~:使用正则 - ~*:正则不区分大小写 > location运算符: 1. 只有=是精准匹配,不会被正则所覆盖 2. 普通匹配,及时是完全匹配,也不是精准匹配 这里如果普通匹配能够命中,同时也会有正则匹配,在返回普通匹配后,还会在放回命中的正则匹配,这样就会产生一种假象,正则匹配的优先级闭普通匹配的优先级高,或正则匹配会覆盖普通匹配。如若是路径为精准匹配,直接返回结果,其他命中路径不给予处理。 >在nginx的html中创建一个static文件夹,用于测试使用。 虚拟机的配置文件 upstream nginx { server 172.17.0.3:8081 weight = 2; server 172.17.0.4:8081 weight = 1; } server { listen 80; server_name www.test.com; location / { root html; index index.html index.htm; } location /aaa { alias html; } location /bbb { proxy_pass http://www.mufeng.info/ } location /a { rewrite ^/ /a.html break; root html/static/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } >/usr/local/nginx/sbin/ngnix -t # 测试配置的有效性 /usr/ocal/nginx/sbin/ngnix -s reload # 重载配置文件 配置中,root表示更目录是html文件夹,index默认访问页面,如果没有配置路径,而在URL中添加路径,例如`www.test.com/static/a.html`,如果在html文件目录中存在static目录,static中又存在a.html文件,则返回此文件。 **root:**访问指定目录下所有文件匹配,root目录尽量是绝对路径 **location:**对路径的映射 **alias:**目录别名使用alias路径替换location路径,转发只有剩余path。 **proxy_pass:**反向代理,与后台服务的衔接。例如:`www.mufeng.info/aaa/bbb/a.html` location /aaa{ # 匹配路径 /aaa,剩余路劲 /bbb/a.html proxy_pass https://www.mufeng.info/nginx/; # 此处关闭,只传递/bbb/a.html } localtion /aaa { # 匹配路径 /aaa,剩余路劲 /bbb/a.html proxy_pass https://www.mufeng.info/nginx; # 此处未关闭,传递整个/aaa/bbb/a.html } 代理转发分两种: - 静态文件:转给static处理模块 - 动态代理:转给后台web服务器 proxy_pass 中关闭与不关闭与ip:port后是否有/有关系,ip:port/关闭 **upstream:**负载均衡 **echo:**它是一个内容生成模块里的命令,生成出来的就是页面内容。echo不是nginx默认自带模块,是个第三方模块 ### Rewrite的使用 rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。 >rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用,例如`http://seanlook.com/a/we/index.jsp?id=1&u=str` 只对/a/we/index.php重写。 rewrite regex replacement [flag]; flag = 【break/last/redirect/permanent/不写】 - regex是正则表达式。^/ ,总是匹配 - replacement 是替换值 - flag:处理标志 - redirect:浏览器发生重定向 ,301重定向 - permanent:302重定向 - break/last:内部重定向 - last标记会引发location重新匹配。 不要轻易使用last标签 - break:停止执行后续命令 ``` #http://www.mufeng.info/a.html --命中 /path1 = a.html , path2 = "" location /a.html { # 本应该在html/static文件夹下查找a.html rewrite ^/ /aa.html break; #修改为path1 = /aa.html root html/static/; # 变成在 html/static 下查找aa.html } ``` >相对于servlet里面,内部内部重定向。外部(浏览器)不做重定向处理。 ### 负载均衡配置 **ip_hash:**将客户端ip做hash值,这样同一客户端的请求总是发往同一个后端服务器,可以解决session的问题。 **weight:**指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 ### nginx运行阶段: 1. rewrite阶段:rewrite指令 ----------control 2. access阶段: service 3. content阶段:response文本给浏览器-------jsp ![nginx 2-2.png](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/usr/uploads/2019/03/1993656655.png) 在path2中为匹配后剩余部分,如果是关闭的代理路径则会传递所有的的路径。 ### nginx中内容生成 nginx中内容的生成分两种方式。 - 静态文件处理模块 - proxy_pass转的第三方 打赏: 微信, 支付宝 标签: nginx 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
Nginx开发(三)--简单模拟常用Nginx负载均衡算法实现 可以上线了。
恭喜,恭喜
看了一遍,没看懂~~
有啥不懂得 我教你