目录

  • ngx_http_core_module模块
  • 自定义nginx版本信息
  • server{}


ngx_http_core_module模块

注意以下阅读时

Syntax:	    #语法
Default:    #默认值
Context:    #配置段:any为任意,主配置段、event、http等(见上一章)
Example:    #示例
  1. default_type
    在响应报文中将指定的文件扩展名映射至MIME对应的类型
Syntax:	    default_type mime-type;
Default:    default_type text/plain;
Context:    http, server, location

例如:

include /etc/nginx/mime.types;
default_type application/octet-stream; 
#除上面指定的类型外,就为默认的MIME类型,浏览器一般会提示下载

mime可以查看这个文件

[root]$ cat /etc/nginx/mime.types
types {
    text/html html;
    image/gif gif;
    image/jpeg jpg;
    ...
}
  1. tcp_nodelay
    在keepalived模式下的连接是否启用TCP_NODELAY选项,即Nagle算法
    当为off时,延迟发送,每发送一个包就需要确认ACK,才发送下一个包
    默认On时,不延迟发送,多个包才确认一次
Syntax:	    tcp_nodelay on | off;
Default:    tcp_nodelay on;
Context:    http, server, location
  1. tcp_nopush
    在开启sendfile,on时合并响应头和数据体在一个包中一起发送
Syntax:	    tcp_nopush on | off;
Default:    tcp_nopush off;
Context:    http, server, location
  1. sendfile
    是否启用sendfile功能,在内核中封装报文直接发送,默认Off
Syntax:	    sendfile on | off;
Default:    sendfile off;
Context:    http, server, location, if in location
  1. charset
    charset utf-8 | off; 是否在响应报文中的Content-Type显示指定的字符集,默认off不显示
  2. server_tokens
    是否在响应报文的Server首部显示nginx版本
Syntax:	    server_tokens on | off | build | string;
Default:    server_tokens on;
Context:    http, server, location

自定义nginx版本信息

如果想自定义响应报文的nginx版本信息,需要修改源码文件,重新编译
如果server_tokens on,修改 src/core/nginx.h 修改第13-14行,如下示例

#define NGINX_VERSION "1.68.9"
#define NGINX_VER "wanginx/" NGINX_VERSION

如果server_tokens off,修改 src/http/ngx_http_header_filter_module.c第49行,如下示例:

static char ngx_http_server_string[] = "Server: nginx" CRLF;
#把其中的nginx改为自己想要的文字即可,如:wanginx

server{}

设置虚拟服务器的配置。

server {
    listen ...
    server_name ...
    root ...
}
  1. listen
    语法
listen PORT|address[:port]|unix:/PATH/TO/SOCKET_FILE

listen address[:port] [default_server] [ssl] 
    [http2 | spdy] [backlog=number] [rcvbuf=size] [sndbuf=size];

# default_server 设定为默认虚拟主机,无法匹配虚拟主机时使用
# ssl 限制仅能够通过ssl连接提供服务
# backlog=number 超过并发连接数后,新请求进入后援队列的长度
# rcvbuf=size 接收缓冲区大小
# sndbuf=size 发送缓冲区大小

注意:
(1) 基于port;
listen PORT; 指令监听在不同的端口
(2) 基于ip的虚拟主机
listen IP:PORT; IP 地址不同
(3) 基于hostname
server_name fqdn; 指令指向不同的主机名

  1. server_name
    虚拟主机的主机名称后可跟多个,支持*通配任意长度的任意字符
Syntax:     server_name name ...;
Default:    server_name "";
Context:    server
Example:    server_name *.chen.com www.chen.*

支持~起始的字符做正则表达式模式匹配,性能原因慎用

server_name ~^www\d+\.chen\.com$

说明:
(1) \d 表示 [0-9]
(2) 匹配优先级机制从高到低
(3) 首先是字符串精确匹配 如:www.chen.com (4) 左侧*通配符 如:*.chen.com (5) 右侧*通配符 如:www.chen.* (6) 正则表达式 如:~^.*\.chen\.com$ (7) 结尾追加default_server表示默认的服务

  1. root
    设置web资源的路径映射;用于指明请求的URL所对应的文档的目录路径,
Syntax:	    root path;
Default:    root html;
Context:    http, server, location, if in location

示例

location /i/ {
    root /data/w3;
}