Nginx 常见的问题
1, 相同 server_name 多个虚拟主机优先级访问, 是按读取文件的优先级来排序
在 / opt/App / 下准备 3 个 code 文件夹, 下面放入 3 个 html 文件, 里面的内容分别是 code1 下对应 server1...
在 / etc/nginx/conf.d / 下准备了 3 个 conf 文件
diff 看一下区别, server1 就指定 code1...
检查语法, 并重载
- nginx -tc /etc/nginx/nginx.conf
- nginx -s reload -c /etc/nginx/nginx.conf
访问, 是 server1
把 server1 改成 server5 再重启再访问
检查配置, 重启
访问变成 server2
2,location 匹配优先级
= 进行普通字符精确匹配, 也就是完全匹配
^~ 表示普通字符匹配, 使用前缀匹配
~ \~* 表示执行一个正则匹配 ()
精确匹配和前缀匹配优先级是最高的, 一旦匹配到一个就直接走此 location, 则不会再往下匹配
正则匹配就算匹配到一个 location, 也还是会接着匹配, 看时候还有比当前 location 更完整, 更匹配的 location 存在, 后面没有了, 才匹配本身
检查配置并重载
访问, 此时匹配到 code1 以后, 就不再往下匹配了
把 code1 的 location 注释掉
检查语法并重载
再访问, 变成 server2
匹配到了最下面那个
把 code2 的 location 也注释掉
检查并重载
访问, 这个时候才能访问到 server3
3,try_files 使用
try_files 用于按顺序检测文件是否存在, 如果存在就返回文件内容, 如果不存在, 则进行配的对应规则
在 / opt/App/code/cache 下放一个 HTML 文件
配置 conf 文件
把之前的 location 全部注释掉, 重新添加两个 location
配置为, 根据 url 去找对应信息, 如果没找到就 @java_page,java_page 会去访问 9090
重启 tomcat9090, 检查配置并重启 Nginx, 浏览器访问, 出来的是 page1
把 page1 挪走, 就会触发 try_files 的自定义规则匹配, 访问 page3
4,Nginx 的 alias 和 root 区别
root: 指定程序的目录在哪一个位置
alias:
5, 用什么方法传递用户真实的 IP
和第一级代理取得联系, 约定一个头信息, 代理 1 在 Nginx 头信息里面加上对应的名称信息, 如 set x_real_ip=$remote_addr, 设置号以后, 带着这个头信息传给后面的代理, 一直到后端服务器, 就可以取到 x_real_ip 的值, 即用户真实 IP
6,Nginx 常见问题
Nginx:413 Request Entity Too Large
请求的内容太大了
解决办法: 用户上传文件限制修改: client_max_body_size
502 bad gateway
后台网关错误 (后端服务无响应, 如: 把 tomcat 关掉再访问)
504 Gateway Time-out
后端服务执行超时 (数据库取数据很慢的时候, 后端负载很高, 连接超时),Nginx 默认的等待时间是 60 秒, 超过 60 秒 Nginx 就会返回 504
来源: http://www.bubuko.com/infodetail-2990082.html