#工作进程数: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;
}
}
}
网友评论