直接回答:Nginx 配置是分层的:main 全局、events 管工作模式、http 管所有站点、server 是一个站点、location 匹配路径;改配置基本都在 server 和 location 这两层里做。
nginx基本配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| main
events { }
http { .... client_max_body_size 20m;
server { .... location { .... }
location path { .... }
location otherpath { .... } }
server { .... client_max_body_size 20m; location { .... } }
upstream name { .... } }
|
下面是 nginx 一些配置中常用的内置全局变量,你可以在配置的任何位置使用它们。
nginx负载均衡
Upstream 指定后端服务器地址列表,在 server 中拦截响应请求,并将请求转发到 Upstream 中配置的服务器列表。
1 2 3 4 5 6 7 8 9 10 11 12 13
| upstream balanceServer { server 192.168.1.100:12345; server 192.168.1.100:12345; server 192.168.1.100:12345; }
server { server_name fe.server.com; listen 80; location /api { proxy_pass http://balanceServer; } }
|
上面的配置只是指定了 nginx 需要转发的服务端列表,并没有指定分配策略。
默认情况下采用的是轮询策略,将所有客户端请求轮询分配给服务端。这种策略是可以正常工作的,但是如果其中某一台服务器压力太大,出现延迟,会影响所有分配在这台服务器下的用户。
nginx常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务 nginx -s stop # 平稳关闭Nginx,保存相关信息,有安排的结束web服务 nginx -s quit # 因改变了Nginx相关配置,需要重新加载配置而重载 nginx -s reload # 重新打开日志文件 nginx -s reopen # 为 Nginx 指定一个配置文件,来代替缺省的 nginx -c filename # 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件 nginx -t # 显示 nginx 的版本 nginx -v # 显示 nginx 的版本,编译器版本和配置参数 nginx -V # 格式换显示 nginx 配置参数 2>&1 nginx -V | xargs -n1 2>&1 nginx -V | xargs -n1 | grep lua
|
Nginx——location常见配置指令,alias、root、proxy_pass
- 【alias】——别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【alias】配置的路径。如:
1 2 3 4
| location /test/ { alias/first/second/img/; }
|
即:请求/test/1.jpg(省略了协议与域名),将会返回文件/first/second/img/1.jpg。
- 【root】——根路径配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【root】配置的路径,并把location配置路径附加到其后。如:
1 2 3 4
| location /test/ { root /first/second/img/; }
|
即:请求/test/1.jpg(省略了协议与域名),将会返回文件/first/second/img/test/1.jpg,相较于alias,使用root会把/test/附加到根目录之后。也就是说alias会截断location匹配的路径,root不会截断,用在umi的时候,可能需要再加一个try_files (/test/user/login,实际没这个文件,加上tryfile之后让返回index.html)
- 【proxy_pass】——反向代理配置,用于代理请求,适用于前后端负载分离或多台机器、服务器负载分离的场景,在匹配到location配置的URL路径后,转发请求到【proxy_pass】配置的URL,是否会附加location配置路径与【proxy_pass】配置的路径后是否有"/"有关,有"/"则不附加,如:
1 2 3 4 5
| location /test/ { proxy_pass http://127.0.0.1:8080/; } // 即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/1.jpg(未附加/test/路径)。
|
1 2 3 4 5
| location /test/ { proxy_pass http://127.0.0.1:8080; } //即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/test/1.jpg(附加/test/路径)。
|
1 2 3 4 5
| location/test/ { proxy_pass http://127.0.0.1:8080/img; } //即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/img1.jpg(未附加/test/路径,但附加了/test/之后的路径)。
|
版权声明:本文为CSDN博主「leeon_l」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhangliangzi/article/details/78257593
Nginx 转发Get,Post请求
1. 根据请求类型转发不同服务器
相同的URL,分Get,Post.两种请求方式,判断请求方式不同进行不同的转发。
1 2 3 4 5 6 7 8 9
| location /http/submitSms{ if ($request_method!~^(POST)$){ proxy_pass http://xx.xx.xxxx.xx:8009; } proxy_pass http://xx.xx.xxxx.xx:8010; proxy_set_header proxy_set_header proxy_set_header }
|
注意: if后面需要有空格,POST必须大写!!!
这中方法还没有验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| <template> <view> <u-input @input="input($event,1)" border="none" :value="getValue.a" type="digit"></u-input> <u-input @input="input($event,2)" border="none" :value="getValue.b" type="digit"></u-input> </view> </template> <script> export default{ data (){ return { valueObj: { type: 0, value: 0 } } }, methods: { input: function(e, a) { this.valueObj = { type: a, value: e, } }, }, computed:{ getValue: function(){ const v = this.valueObj.value; if (v == "") { return { "a": "", "b": "", "c": "", "d": "", "e": "", "f": "", "g": "", } } switch(this.valueObj.type){ case 1: return { "a":v, "b":v*10 }; case 2: return { "a":v*0.1, "b":v } } } } } </script>
|
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。