前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【技术创作101训练营】技术角 | 在CentOS 8上使用Nginx 1.18: 基本配置

【技术创作101训练营】技术角 | 在CentOS 8上使用Nginx 1.18: 基本配置

原创
作者头像
ZNing
修改2020-09-23 22:41:10
5150
修改2020-09-23 22:41:10
举报
文章被收录于专栏:ZNing·腾创库ZNing·腾创库

作者按:慧响技术角“源产控”专题,将聚焦开源、国产化、自主可控三个方向的技术,以操作系统、中间件、数据库、程序应用等为粗分类,更新相关技术的发展趋势、探究技术核心的深度使用、系统总结技术整体架构,为对相关技术的学习者提供可观的资料,亦为个人同步学习总结的笔记,以飨读者。

本篇对在CentOS 8上使用Nginx 1.18的基本配置进行介绍与总结,未来对在CentOS 8上使用Nginx 1.18的相关,将陆续更新其使用总结、性能调优等方面的系列文章,敬请期待。

关于“在CentOS 8上使用Nginx 1.18”这个系列文章,之前已有一篇《在CentOS 8上使用Nginx 1.18: 编译安装与基本使用》,主要对在CentOS 8上使用Nginx 1.18的基本安装与基本使用进行介绍与总结,如有需要可以点击了解。

Nginx基本配置

语法

  1. 配置文件由指令与指令块构成;
  2. 每条指令以;结尾,指令与参数间以空格符号分隔;
  3. 指令块以{}将多条指令组织在一起;
  4. include语句允许组合多个配置文件以提升可维护性;
  5. 使用#添加注释,提高可读性;
  6. 使用$可调用变量;
  7. 部分指令的参数支持正则表达式。

单位

时间单位对应表

命令

含义

ms

毫秒

s

m

分钟

h

小时

d

w

M

月,为30天

y

年,为365天

空间单位对应表

命令

含义

bytes(b)

k/K

kilobytes(kb)

m/M

megabytes(mb)

g/G

gigabytes(gb)

区块

Nginx的配置文件以大括号的方式分为各个区域,我们简称其为“区块”。根据区块名称,Nginx分别有httpstreamserverlocationupstreamevents等。其中主要的区块功能有:http块表示此为HTTP协议处理块、stream块表示此为通过第四层传输层进行TCP/UDP网络协议包的转发处理块、upstream表示有上游服务提供的配置信息、location对应URL的表达式、server对应一个或一组域/域名的访问。

http区块

http块表示此为HTTP协议处理块。该块一般位于最顶层,即main主块之中。常用配置示例如下:

代码语言:txt
复制
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    server {
        ……
        location {
            ……
        }
    }
}
stream区块

stream块表示此为通过第四层传输层进行TCP/UDP网络协议包的转发处理块。该块一般位于最顶层,即main主块之中。该区块仅适用于nginx 1.9.0及更高版本的使用。另外该区块在编译时默认是不自带的,如需使用需要在编译时增加--with-stream选项。常用配置示例如下:

代码语言:txt
复制
stream {
    upstream backend {
        hash $remote_addr consistent;
        server backend1.example.com:12345 weight=5;
        server 127.0.0.1:12345            max_fails=3 fail_timeout=30s;
        server unix:/tmp/backend3;
    }

    upstream dns {
       server 192.168.0.1:53535;
       server dns.example.com:53;
    }

    server {
        listen 12345;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }

    server {
        listen 127.0.0.1:53 udp reuseport;
        proxy_timeout 20s;
        proxy_pass dns;
    }

    server {
        listen [::1]:12345;
        proxy_pass unix:/tmp/stream.socket;
    }
}

由于stream为四层的转发服务,因此stream区块本身的配置相对较少,主要以server区块的控制为主。

server区块

server对应一个或一组域/域名的访问。该块一般位于httpstream区块之中。常用配置示例如下:

代码语言:txt
复制
server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html;
        index  index.html index.htm;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
upstream区块

upstream表示有上游服务提供的配置信息。该块一般位于httpstream区块之中。常用配置示例如下:

代码语言:txt
复制
upstream backend {
    hash $remote_addr consistent;

    server backend1.example.com:12345  weight=5;
    server backend2.example.com:12345;
    server backup1.example.com:12345   backup;
    server backup2.example.com:12345   backup;
}

server {
    listen 12346;
    proxy_pass backend;
}

上面这个配置即为在访问12346端口时,会负载均衡名为backend的配置,该配置为hash策略匹配,其中最后两条为备用节点,第一条为权重为5的主节点,第二条也为主节点但未设置其他权重。

location区块

location对应URL的表达式。该块一般位于server区块之中。常用配置示例如下:

代码语言:txt
复制
location = / {
    proxy_pass http://127.0.0.1:9090; #A
}

location / {
    root   html; #B
    index  index.html index.htm; #B
}

location /configC/ {
    proxy_pass http://127.0.0.1:9092; #C
}

location ^~ /images/ {
    proxy_pass http://127.0.0.1:9093; #D
}

location ~* \.(gif|jpg|jpeg)$ {
    proxy_pass http://127.0.0.1:9094; #E
}

上面配置A为请求/时命中,配置B为请求/index.html时命中,配置C为请求/configC/666.html时命中, 配置D为请求/images/1.gif时命中,配置E为请求/documents/1.jpg时命中。

events区块

该区块比较特殊,主要放置的是配置关于影响连接处理性能的相关命令。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nginx基本配置
    • 语法
      • 单位
        • 时间单位对应表
        • 空间单位对应表
      • 区块
        • http区块
        • stream区块
        • server区块
        • upstream区块
        • location区块
        • events区块
    相关产品与服务
    负载均衡
    负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档