本教程会告诉你 Nginx 是如何工作的,其背后的概念有哪些,以及如何优化以提升应用程序的性能。还会介绍如何安装、如何启动、运行 Nginx。如果你对 Nginx 已经有所了解,或者你希望了解更多,这个教程也会对你非常有帮助。
本教程包括三节:
基础概念——你可以了解命令(directive)与环境或者上下文(context)的区别、继承模式,以及 Nginx 选择服务器区块的顺序,还有安装位置。
性能管理——提升速度的诀窍。我们将会讲解 gzip、缓存、缓冲区以及超时设置。
SSL 设置——讲解用 HTTPS 来提供内容的设置步骤。
为了可以方便地找到正确...
location指令是nginx中最关键的指令之一,location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,这其中较难理解的是多个location的匹配顺序,本文会作为重点来解释和说明。
开始之前先明确一些约定,我们输入的网址叫做请求URI,nginx用请求URI与location中配置的URI做匹配。
location格式
location有两种格式:
匹配uri类型,有四种参数可选,当然也可以不带参数。
命名location,用@来标识,类似于定义goto语句块。
location [ = | ~ | ~* | ^~ ] uri { ... }locat...
问题描述
我们的业务系统比较复杂,但最终提供给用户的访问接口比较单一,都是使用 Nginx 来做一个代理转发,而这个代理转发,往往需要匹配很多种不同类型的 URL 转给不同的服务。这就使得我们的 Nginx 配置文件变得很复杂,粗略估计了下,我们有近20个 upstream,有近60个 location 匹配。这些配置按照模块分布在不同的文件中,虽然复杂,但是仍然在我们的努力下运行的良好。直到有一天,有位同事给我反映说偶尔有些 URL 会出现 404 的问题。一开始没太在意,因为他也说不准是哪一种 URL 才遇到这个问题。
问题查找
后来,慢慢的查找...
location 匹配命令
123456
~ # 波浪线执行正则匹配,区分大小写~* # 波浪线带星执行正则匹配,不区分大小写^~ # ^~ 普通字符匹配,如果该选项匹配,只匹配该选项,不匹配其它 location 选项,一般用来匹配目录= # 普通字符串精确匹配空 # 普通字符串匹配,例如 location /abc {}@ # "@" 定义一个命名的 location,使用在内部重定向时,例如 error_page, try_files
...