作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一大章介绍了Kubernetes的知识,本章节我们进入中间件的讲解,这里会包含很多不同的类型组件,中间件的第一个大类我这里定义的是Web服务器。由于目前使用最广泛的Web服务器是Nginx,所以我们这里的讲解主要以Nginx服务器为主。
Nginx配置文件
我们这里介绍Nginx,首先就来认识下Nginx的配置文件。
[root@localhost nginx]# ll /etc/nginx/nginx.conf
-rw-r--r-- 1 root root 2336 Nov 11 2022 /etc/nginx/nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
#使用nginx用户跑Nginx的业务进程
user nginx;
#业务进程的数量,可以指定具体数量,auto则是多少核就多少子进程数量。
worker_processes auto;
#错误日志的路径,后面还可以调整级别
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
#每个 worker 进程最多处理 1024 个并发连接
events {
worker_connections 1024;
}
#http模块,nginx里面最核心的配置,全局配置
http {
#定义日志记录格式,并取名main,供后面调用
#定义了客户端地址,认证用户,请求时间,请求地址和协议
#返回给客户端状态码,发生给客户端大小,请求来源
#请求客户端 ,真实ip(因为前面可能有代理)
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#日志路径,如果没单独配置就会使用这个日志
#这个日志不会切割,前面有说过,用个地址格式就上上面定义的main
access_log /var/log/nginx/access.log main;
#下面几个都是关于性能优化的指标
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
#可以理解为浏览器支持的文件格式
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
#如果把所有配置文件都放置在这里,可能会很复杂,管理起来很麻烦
#后期我们的配置都会放置在这里
include /etc/nginx/conf.d/*.conf;
#定义具体的web配置
#定义了一个网站,监听ipv4和v6的80端口
#绑定域名,可以理解是只要请求到了服务器都算命中,实际应该是固定域名
#定义这个命中以后读取的静态网站内容
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
#定义另外的包含
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
#当遇到404没找到页面,就会返回当前目录的404.html文件
error_page 404 /404.html;
location = /404.html {
}
#当遇到500x 错误的时候就会返回当前目录50x.html文件
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
#下面默认就是注释的,就是一个https的请求配置,包含了证书配置
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2;
# listen [::]:443 ssl http2;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
}
1.如果我按照这个默认配置,请求只要输入服务器的地址访问的内容就是下面的文件。如果要配置自己的网站,就调整绑定域名和指定路径即可。
/usr/share/nginx/html/index.html
2.如果访问一个不存在的地址则会出现下面的内容。
#记录404的日志
192.168.31.46 - - [01/Apr/2025:22:11:47 +0800] "GET /34 HTTP/1.1" 404 3650 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" "-"
3.5xx错误和404类似只是我这里没反向代理,不好演示。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。