Nginx记录
配置文件
nginx.conf为Nginx服务器的核心配置文件。Nginx会根据配置文件中指定的配置项启动,默认配置文件为/usr/local/etc/nginx/nginx.conf。用户也可以自定义配置项,使用-c参数指定配置文件。
# 指定Nginx进程运行的用户 user nginx; # Nginx工作的进程数量,默认自动配置,可配置成CPU数 worker_processes auto; # Nginx的错误日志位置 error_log /var/log/nginx/error.log; # Nginx进程运行后的进程id文件 pid /run/nginx.pid; # 包含模块文件;*.conf表示所有以.conf结尾的文件 include /usr/share/nginx/modules/*.conf; events { # events块开始 # 一个worker进程的最大连接数 worker_connections 1024; } # events块结束 http { # http块开始 # Nginx日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # Nginx access_log日志文件位置 access_log /var/log/nginx/access.log main; # 设置允许以sendfile方式传输文件 sendfile on; # 防止网络阻塞 tcp_nopush on; # 在TCP协议中,使用Nagle算法,把小包组成大包提高带宽利用率 tcp_nodelay on; # 服务端对连接保持的时间,默认是65秒 keepalive_timeout 65; # 设置size类型哈希表的最大值 types_hash_max_size 2048; # 包含资源类型文件 include /etc/nginx/mime.types; # 定义响应的默认MIME类型 default_type application/octet-stream; # 引入其他的配置文件,文件名必须以.conf结尾 include /etc/nginx/conf.d/*.conf; server { # 监听的端口号,写法一 listen 80 default_server; # 监听的端口号,写法二 listen [::]:80 default_server; # 对外提供的虚拟主机名称,可以理解为域名;_表示无效域名之一,也可以使用"--"和"!@#" server_name _; # 请求的根目录位置 root /usr/share/nginx/html; # 注释信息 # 引入其他的配置文件,文件名必须以.conf结尾 include /etc/nginx/default.d/*.conf; location / { } # 定义将为指定错误显示的URI,返回状态码为404。一个URI值可以包含变量 error_page 404 /404.html; location = /40XX.html { } # 定义将为指定错误显示的URI,返回状态码为500或者502、503、504。一个URI值可以包含变量 error_page 500 502 503 504 /50x.html; location = /50x.html; # location块开始,精准匹配uri } # location块结束 } # server块结束 # server块开始 server { # 监听端口,ssl表示允许此端口接收的所有连接在SSL模式下工作,http2表示配置端口接收HTTP2连接 listen 443 ssl http2 default_server; # 监听端口的另一种写法 listen [::]:443 ssl http2 default_server; # 对外提供的虚拟主机名称,可以理解为域名;_表示无效域名之一,也可以使用"--"和"!@#" server_name _; # 请求的根目录位置 root /usr/share/nginx/html; # 指定带有PEM格式证书的文件位置 ssl_certificate "/etc/pki/nginx/server.crt"; # 指定带有PEM格式的密钥文件位置 ssl_certificate_key "/etc/pki/nginx/private/server.key"; # 设置存储会话参数缓存的类型和大小。Shared表示所有工作进程之间共享的缓存 ssl_session_cache shared:SSL:1m; # 指定客户端可以重用会话参数的时间 ssl_session_timeout 10m; # 返回客户端支持的密码列表 ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # 引入其他配置文件,文件名必须以.conf结尾 include /etc/nginx/default.d/*.conf; # location块开始 location / { } # location块结束 # 定义将为指定错误显示的URI error_page 404 /404.html; # location块开始,精准匹配URI location = /40XX.html { } # location块结束 # 定义将为指定错误显示的URI error_page 500 502 503 504 /50x.html; # location块开始,精准匹配URI location = /50x.html { } # location块结束 } # server块结束 }
依赖库
PCRE和OpenSSL为Nginx默认依赖的库。除此之外,Nginx中还可以添加Zlib库,实现压缩功能。
1.PCRE库
PCRE(Perl Compatible Regular Expression)库是一组函数,这些函数使用与Perl 5相同的语法和语义来实现正则表达式模式匹配。在Nginx中,PCRE库与location块结合得比较紧密,可以用来匹配大量静态资源、配置防盗链、禁止爬虫等。
2. OpenSSL库
OpenSSL整个软件包大概可以分成三个部分:SSL协议库、应用程序以及密码算法库。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥、证书封装管理功能以及SSL协议,并提供了丰富的应用程序。在Nginx中,其对应的模块为ngx_http_ssl_module和ngx_mail_ssl_module。常见的使用方式是基于ngx_http_ssl_module模块实现对站点的访问,示例如下。
server { ... ssl_certificate cert.pem; ssl_certificate_key cert.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ... }
该配置示例基于ngx_http_ssl_module模块指定了cert.pem与cert.key的文件位置。ssl_ciphers用来选择加密套件。它们必须是OpenSSL能够识别的。且多个加密套件之间使用“!”分隔。“!”表示从算法列表中删除指定加密算法,如!MD5表示排除MD5算法。
3. Zlib库
Zlib是通用的压缩库,由Jean-loup Gailly和Mark Adler开发。其提供了一套完整的压缩和解压缩函数,并可以检测解压后的数据的完整性。Zlib同时支持读写gzip(.gz)格式的文件。在Nginx中,ngx_http_gzip_module和ngx_http_gzip_static_module模块使用到了Zlib库。它主要用于对http包内的内容或静态文件进行压缩,减少网络传输量。gzip on指令能直接开启压缩模式。
http { ... gzip on; gzip_comp_level 5; gzip_min_length 20k; ... }
该配置示例基于ngx_http_gzip_module模块开启了gzip压缩模式,并设置压缩的级别为5,原始文件小于20KB时不执行压缩操作。
本文作者:jikefan
本文链接:https://www.cnblogs.com/jikefan/articles/18469307
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。