博客
关于我
Nginx基础知识点与使用场景梳理
阅读量:792 次
发布时间:2023-02-15

本文共 2982 字,大约阅读时间需要 9 分钟。

Nginx配置与使用指南

前言

Nginx(engine x)是一款高性能的Web服务器和反向代理服务器,也支持IMAP/POP3/SMTP协议。由俄罗斯开发者Igor Sysoev于2002年首次发布,经过多年发展,成为全球最受欢迎的Web服务器之一,拥有超过2220万个活跃网站,占用率达12.18%。

Nginx的核心优势包括:

  • 高并发处理能力:采用 Poll 模型,单机可支持万级并发连接
  • 低资源消耗:内存占用极低,非活跃连接仅需几MB
  • 高扩展性:模块化设计,支持第三方模块扩展
  • 高可用性:支持热部署,版本升级无需重启
  • 多功能性:可作为HTTP服务器、反向代理、负载均衡等

Nginx配置文件结构

Nginx的配置文件分为多个层级结构,主要包括以下几部分:

  • 全局块:配置影响Nginx整体运行的参数,如用户组、日志路径等。
  • events块:配置网络连接管理,如连接数限制、事件驱动模型等。
  • http块:定义HTTP服务器的全局配置,包括模块加载、日志设置、缓存等。
  • server块:定义虚拟主机配置,支持多个服务器块。
  • location块:定义请求路由规则,处理不同URI路径的请求。
  • 以下是一个典型的Nginx配置示例:

    user nobody;worker_processes 1;error_log logs/error.log;sendfile on;keepalive_timeout 65;http {    include mime.types;    default_type application/octet-stream;    sendfile on;    server {        listen 80;        server_name localhost;        root html;        index index.html index.htm;        location / {            proxy_pass http://backend;            proxy_set_header Host $host:$server_port;            proxy_set_header X-Forwarded-For $remote_addr;        }    }}

    server块指令简介

    • server:定义服务器监听地址和端口,默认为0.0.0.0:80
    • server_name:指定服务器名称,用于域名匹配。
    • location:定义请求路由规则,支持正则表达式和前缀匹配。
    • root:指定静态资源的根目录。
    • index:设置默认访问页面。

    location块的URI规则

    location块的URI匹配规则分为以下几种:

  • 精确匹配location /test.html,只能匹配/test.html
  • 前缀匹配location ^~ /images/,匹配以/images/开头的路径。
  • 正则表达式匹配
    • ~:区分大小写的正则匹配。
    • ~*:不区分大小写的正则匹配。
  • 通用匹配location /,匹配所有请求。

  • location块的优先级

    location块的匹配规则由优先级决定,优先级从高到低为:

  • =
  • ^~
  • 正则表达式
  • 字符串前缀匹配
  • 通用匹配/

  • 常用使用场景

    1. HTTP服务器

    Nginx可以作为静态资源服务器,适合部署静态网站或资源库。

    配置示例:

    http {    server {        listen 80;        server_name localhost;        root /usr/local/var/html;        index index.html index.htm;    }}

    2. 静态服务器

    将动态资源和静态资源分离,常用于前端资源管理。

    配置示例:

    http {    server {        listen 80;        server_name localhost;        set $doc_root /usr/local/var;        location / {            proxy_pass http://backend;        }        location ^~ /images/ {            root $doc_root;        }        location ~* \.(gif|jpg|jpeg|png|bmp) {            root $doc_root/img;        }    }}

    3. 反向代理

    Nginx作为反向代理,代理内部服务器接收外部请求。

    配置示例:

    http {    server {        listen 80;        server_name localhost;        proxy_pass http://backend;        proxy_set_header Host $host:$server_port;        proxy_set_header X-Forwarded-For $remote_addr;    }}

    4. 负载均衡

    Nginx支持多种负载均衡算法,如RR、IP hash、fair等。

    配置示例(RR轮询):

    http {    upstream backend {        server localhost:8081;        server localhost:8082;    }    server {        listen 80;        server_name localhost;        proxy_pass http://backend;        proxy_set_header Host $host:$server_port;    }}

    其他指令

    return指令

    返回HTTP状态码和重定向URL。

    示例:

    location /permanently/moved/url {    return 301 http://www.example.com/moved/here;}

    rewrite指令

    多次修改URI请求。

    示例:

    location /users/ {    rewrite ^/users/(.*)$ /show?user=$1 break;}

    error_page指令

    自定义错误页面。

    示例:

    error_page 404 /404.html;

    deny指令

    禁止访问特定路径。

    示例:

    location ~* \.(txt|doc) {    deny all;}

    内置变量

    Nginx支持多种内置变量,可用于配置文件中,例如:

    • $remote_addr:客户端IP地址
    • $request_uri:请求URI
    • $document_root:根目录路径
    • $scheme:请求协议(http/https)

    通过以上配置示例和指令介绍,可以更好地理解Nginx的高级功能及其应用场景。

    转载地址:http://tecfk.baihongyu.com/

    你可能感兴趣的文章
    nacos集群搭建
    查看>>
    nagios安装文档
    查看>>
    name_save matlab
    查看>>
    Nami 项目使用教程
    查看>>
    NAT-DDNS内网穿透技术,解决动态域名解析难题
    查看>>
    NativePHP:使用PHP构建跨平台桌面应用的新框架
    查看>>
    NAT技术
    查看>>
    NAT模式下虚拟机centOs和主机ping不通解决方法
    查看>>
    NAT的两种模式SNAT和DNAT,到底有啥区别?
    查看>>
    NAT网络地址转换配置实战
    查看>>
    Navicat for MySQL 命令列 执行SQL语句 历史日志
    查看>>
    Navicat for MySQL 查看BLOB字段内容
    查看>>
    Navicat Premium 12 卸载和注册表的删除
    查看>>
    navicat 系列软件一点击菜单栏就闪退
    查看>>
    Navicat 设置时间默认值(当前最新时间)
    查看>>
    navicat 连接远程mysql
    查看>>
    navicat:2013-Lost connection to MySQL server at ‘reading initial communication packet解决方法
    查看>>
    Navicat下载和破解以及使用
    查看>>
    Navicat中怎样将SQLServer的表复制到MySql中
    查看>>
    navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
    查看>>