Nginx location 配置:从入门到精通

2024-06-07 09:44

本文主要是介绍Nginx location 配置:从入门到精通,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Nginx的 location 配置是Nginx服务器配置中非常关键的一部分,它决定了如何响应不同的HTTP请求。以下是关于Nginx location配置的详细解释:

一、基本语法

location指令的基本语法如下:


location [modifier] pattern {# 配置内容
}

其中,[=||*|^~|@]是修饰符,用于定义URI的匹配方式,/uri/是要匹配的URI。

二、修饰符详解

  1. 修饰符和模式
  • =:精确匹配。如果请求 URI 与模式完全匹配,则采用此配置块。
  • ^~:前缀匹配。如果请求 URI 以模式开头,并且是最长的匹配,则采用此配置块。
  • ~:正则表达式匹配(区分大小写)。
  • ~*:正则表达式匹配(不区分大小写)。
  • /:匹配任何请求。如果没有其他匹配,这个会作为默认匹配。
  1. 示例:

location = /exact-match {# 精确匹配 /exact-match
}location ^~ /static/ {# 前缀匹配 /static/
}location ~ \.php$ {# 区分大小写的正则表达式匹配,以 .php 结尾的请求
}location ~* \.(jpg|jpeg|png|gif|ico)$ {# 不区分大小写的正则表达式匹配,匹配图片文件
}location / {# 匹配任何请求
}

三、匹配顺序

当Nginx收到一个HTTP请求时,它会按照以下顺序进行location的匹配:

  1. 首先检查是否有精确匹配(使用=修饰符)。
  2. 如果没有精确匹配,检查是否有前缀匹配(使用^~修饰符)。
  3. 如果没有前缀匹配,检查是否有正则匹配(使用~或~*修饰符),按照配置文件中的顺序从上到下依次匹配。
  4. 如果没有正则匹配,使用通用匹配(使用/)。

注意:一旦匹配成功,Nginx就会停止继续查找其他location块,并按照当前匹配到的location块中的配置指令来处理请求。

四、实际案例

1. 静态文件服务

配置 Nginx 为静态文件提供服务,如 HTML、CSS 和 JavaScript 文件。

server {listen 80;server_name example.com;location / {root /var/www/html;index index.html index.htm;}location /images/ {root /var/www/html;}location ~* \.(css|js|jpg|jpeg|png|gif|ico)$ {root /var/www/html;expires 30d;}
}

在这个示例中:

  • 根 location 块将所有请求定向到 /var/www/html,并使用 index.html 或 index.htm 作为默认文件。
  • /images/ 块将 /images/ URI 的请求定向到相同的根目录。
  • 正则表达式 location 块为 CSS、JS 和图片文件设置了 30 天的缓存过期时间。

2. 反向代理

配置 Nginx 作为反向代理,将请求转发到后端服务器。

server {listen 80;server_name example.com;location / {proxy_pass http://backend_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

在这个示例中:

  • 所有请求都会被转发到 http://backend_server。
  • 使用 proxy_set_header 设置了在请求头中传递的变量,以保持客户端信息。

3. 基于 IP 地址的访问控制

限制特定 IP 地址访问某些资源。

server {listen 80;server_name example.com;location / {root /var/www/html;index index.html index.htm;}location /admin {allow 192.168.1.1;deny all;}
}

在这个示例中:

  • 根 location 块提供常规服务。
  • /admin 块仅允许 IP 地址 192.168.1.1 访问,其他所有请求将被拒绝。

4. URL 重写

使用 rewrite 指令进行 URL 重写。

server {listen 80;server_name example.com;location / {root /var/www/html;index index.html index.htm;}location /old {rewrite ^/old/(.*)$ /new/$1 permanent;}
}

在这个示例中:

  • 所有以 /old 开头的请求将被重写为 /new,并返回一个永久重定向状态码。

五、注意事项

  • 在使用正则匹配时,要特别注意正则表达式的书写,避免因为正则表达式书写错误而导致匹配失败。
  • 在配置多个location块时,要注意匹配顺序和优先级,确保Nginx能够正确地处理不同的HTTP请求。
  • 如果在配置文件中使用了root指令来指定文件路径,要注意root指令与alias指令的区别,确保文件路径的正确性。

这篇关于Nginx location 配置:从入门到精通的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1038827

相关文章

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

springboot中配置logback-spring.xml的方法

《springboot中配置logback-spring.xml的方法》文章介绍了如何在SpringBoot项目中配置logback-spring.xml文件来进行日志管理,包括如何定义日志输出方式、... 目录一、在src/main/resources目录下,也就是在classpath路径下创建logba

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

SpringCloud Stream 快速入门实例教程

《SpringCloudStream快速入门实例教程》本文介绍了SpringCloudStream(SCS)组件在分布式系统中的作用,以及如何集成到SpringBoot项目中,通过SCS,可... 目录1.SCS 组件的出现的背景和作用2.SCS 集成srping Boot项目3.Yml 配置4.Sprin

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng