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