Web服务器-Nginx配置文件和静态网站

63 阅读4分钟

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一大章介绍了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类似只是我这里没反向代理,不好演示。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。