http section和server section。

全局配置参数

user nginx;//使用nginx用户身份启动nginx
worker_process 10;// worker进程数,一般与cpu核心数相同。
error_log  /var/log/nginx/error.log warn;// 当server中没有单独设置error_log时。
pid        /var/run/nginx.pid;
events {
  use  /dev/poll;//使用事件模型`/dev/poll(Solaris 和Unix特有),epoll(Linux特有)`
worker_connections  2048;//一个工作进程可以接口并发的最大连接数。
}

Http Section配置

1,简介。http section的指令,用来处理http链接。

//nginx.conf文件中
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    ####定义访问日志的格式。 在server中可以使用main格式。access_log  /var/log/nginx/hzq.com.log  main;
    log_format  main  '$remote_addr - [$time_local] "$request" '
                      '$status $body_bytes_sent'
                      '"$http_user_agent"  $request_time ';
    sendfile        on;
    client_header_buffer_size 512k;//当客户端请求头大于1KB时,会使用缓存。
    
    keepalive_timeout  65;
  
    include /etc/nginx/site-enables/*.conf;//引入其他conf配置文件(主要是各个virtual server)
}

Server Section配置

1,简介

1)通过关键字server 定义的section,是一个虚拟服务器,包含在http关键字定义的section中,用来响应http请求。
不在listen中显示指定default_server, 会默认选择第一个。

http {
   include /etc/nginx/mime.types;
   default_type  application/octet-stream;
   log_format  main 'xxxxx'

   include /etc/nginx/site-enables/*.conf; //引入文件。`每个文件中可以单独配置server`
   server {
      listen 80 default_server;// `*:80, 一个服务器可能有多个公网ip,以及内网ip。` 当没有Host的header时,作为监听80的default server提供http服务。
      server_name www.hzq.com  www.hqq.com;//`请求头 Host ,与server_name匹配,用于route 哪一个server`
  }
}

2)request中如果没有包含host字段,或者host字段不在nginx server的server_name中,会使用在该端口上监听的default_server。
匹配没有host请求头的request

server {
  listen 80;
  server_name "";//默认值,可不填
 //配置这个server,将取代在80端口上的default_server
}

3)default_server是listen指令的参数,不同的端口可以指定不同的default_server。

server {
  listen 80 default_server;
  server_name www.hzq.com  www.hqq.com
  //...
}
server {
  listen 210.73.xxx.xxx:9876 default_server;
  server_name "";
  location / {
  }
}

2,nginx通过自身的监听端口、request的host请求头、server_name指令来决定request route到哪一个server。

image.png

3,server配置注意点。

1)listen指令的格式
listen ip:port default_server; // 监听的是自己的ip(一个服务器可以有多个ip)和自己的端口。
listen port default_server;
2)server_name .hzq.com; //可以匹配子域和域本身*.hzq.com和hzq.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 使用 HTTP 服务器或客户端功能必须调用require('http')。 Node 里的 HTTP 接口支持协议...
    保川阅读 1,403评论 0 1
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,414评论 0 6
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 2,090评论 0 9
  • 老实说,在参加文青手绘班以前,我一直都喜欢画漫画,一直都是自已摸索着前进。 也发表过一些作品在厂举办的内刋里。 但...
    涯为漫画痴阅读 728评论 2 7