作者按:慧响技术角“源产控”专题,将聚焦开源、国产化、自主可控三个方向的技术,以操作系统、中间件、数据库、程序应用等为粗分类,更新相关技术的发展趋势、探究技术核心的深度使用、系统总结技术整体架构,为对相关技术的学习者提供可观的资料,亦为个人同步学习总结的笔记,以飨读者。
本篇对在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的基本安装与基本使用进行介绍与总结,如有需要可以点击了解。
;
结尾,指令与参数间以空格符号分隔;{}
将多条指令组织在一起;include
语句允许组合多个配置文件以提升可维护性;#
添加注释,提高可读性;$
可调用变量;命令 | 含义 |
---|---|
| 毫秒 |
| 秒 |
| 分钟 |
| 小时 |
| 天 |
| 周 |
| 月,为30天 |
| 年,为365天 |
命令 | 含义 |
---|---|
| bytes(b) |
| kilobytes(kb) |
| megabytes(mb) |
| gigabytes(gb) |
Nginx的配置文件以大括号的方式分为各个区域,我们简称其为“区块”。根据区块名称,Nginx分别有http
、stream
、server
、location
、upstream
、events
等。其中主要的区块功能有:http
块表示此为HTTP协议处理块、stream
块表示此为通过第四层传输层进行TCP/UDP网络协议包的转发处理块、upstream
表示有上游服务提供的配置信息、location
对应URL的表达式、server
对应一个或一组域/域名的访问。
http
区块http
块表示此为HTTP协议处理块。该块一般位于最顶层,即main
主块之中。常用配置示例如下:
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
选项。常用配置示例如下:
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
对应一个或一组域/域名的访问。该块一般位于http
、stream
区块之中。常用配置示例如下:
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
表示有上游服务提供的配置信息。该块一般位于http
、stream
区块之中。常用配置示例如下:
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
区块之中。常用配置示例如下:
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 删除。