nginx http模块基本配置

虚拟主机和请求分发

  • 多个域名对应同一ip时,配置多个server虚拟主机,对应多个域名,server_name对应用户请求的域名

监听端口

  • 默认: listen 80;
  • 配置块: server

可以加ip、端口、主机名

1
2
3
4
listen 127.0.0.1:8000;
listen 127.0.0.1;//不加端口号,默认监听80
listen *:8000;
listen 127.0.0.1 default_server backlog=1024;
parameters 定义
default/default_server 默认server块,不设置就默认第一个server,当请求没能匹配到主机域名时,就选择默认
backlog=num tcp中的backlog队列大小。默认-1,不设置。存放等待建立tcp三次握手连接
rcvbuf=size 监听句柄的SO_RCVBUF
sndbuf=size 监听句柄的SO_SNDBUF
accpet_filter 设置accept过滤器,只对FreeBSD
deferred 只有用户发送请求数据,内核在网卡中收到请求数据包,内核才会唤醒worker进程处理,适用于大并发情况,一般不建议使用
bind 绑定当前端口/地址对,如127.0.0.1:8000.只有同时对一个端口监听多个地址时有效
ssl 监听的端口连接必须基于ssl

主机域名

  • 语法: server——name name[…];可以跟多个主机名
  • 默认: server_name “”; 匹配没有Host的http请求
  • 配置块: server

当header的host和多个server匹配,则按匹配优先级

  1. 字符串完全匹配 www.test.com
  2. 通配符在前面的 *.test.com
  3. 通配符在后面的 www.test. *
  4. 使用正则的

都不匹配就选默认的

location

  • 语法: location [=|~|~*|^~|@]
  • 默认: server_name “”; 匹配没有Host的http请求
  • 配置块: server