典型Nginx配置

#工作进程数:nginx是分为主进程和工作进程来处理请求的,此处定义的是工作进程数。
worker_processes 1; 

#events模块
events {
  #主进程与工作进程之间是通过事件机制控制的
  #所以每个工作进程可以处理的连接数是在事件模块里配置的。
  worker_connections 1024;
}

#配置错误日志路径
error_log logs/errors.log;

#配置pid文件的存储路径,一般放置在logs文件夹中
pid logs/nginx.pid

#http模块
http {
  #mime type 和 Content-Type 的对应关系
  include mime.types

  #设置默认的Content-Type
  default_type octet_stream;

  #http访问日志存放路径
  access_log logs/access.log;

  #设置keepalive长连接超时时间:指一个请求处理完成后可空转的时间
  #不是从请求开始计时的,是从请求完成计时的。
  keepalive_timeout 75;

  #指定是否使用系统内核的sendfile调用机制传送文件,据说效率高。
  sendfile on;

  #开启gzip传输
  gzip on;

  include server.d/*.conf;

  #配置反向代理的上游服务器
  upstream test {
    #设置多个上游服务器
    server x.x.x.x weight=5; #默认情况下通过轮询权重来控制请求转发
    server x.x.x.x weight=10;
    
    #也可以设置ip hash机制,针对单一请求ip转发到固定的server
    #ip_hash;

    #fair机制:按照后台的请求响应时间分配,响应时间短的优先分配。需要额外安装模块
    #fair;

    #url_has机制:特定的url转发到特定的server,有利于上游服务器缓存,这个也需要额外安装模块
    #url_hash;
  }

  #配置一个http server
  server {
    #服务监听的端口
    listen 80; 
    
    #服务名:实际类似一个虚拟服务器的概念,nginx会根据http请求中的host来匹配这个虚拟服务器的名称,这也是多域名匹配的原理。
    server_name localhost;

    include global.conf;
    include www.d/*.conf;
    include compitable.conf;

    #设置上游服务器的路径匹配
    location /test {
      #proxy_pass的格式是 protocal+domain+[端口]+[可选路径]
      #domain要特别说明,domain如果对应多个ip,可以用server_group,也就是upstream定义的多一个服务器了
      proxy_pass http://test;

      #nginx允许重设或增加头信息:默认有host和Connection
      proxy_set_header host $proxy_host; #如果不想让nginx修改该值,可以传入 $http_host,但是如果客户端没传入,则这个变量也是无效的,可以使用$host作为替代,这个变量在客户端有值的时候传入客户端的值,没有的时候传入server的host。
      proxy_set_header Connection close;
      proxy_set_header Accept-Encoding ""; 空字符串表示不传值到上游服务器
      #真实IP
      proxy_set_header X-Real-IP $remote_addr;
      #记录代理跳转的真实路径
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      
      client_max_body_size 10m;
      client_body_buffer_size 128k;     
    }
  }

}

你可能感兴趣的:(典型Nginx配置)