Nginx配置2-http块配置
http配置块
http配置块包括http-全局块、http-server块、upstream 块儿。可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
http-全局块
mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等
http {
#设定mime类型,类型由mime.type文件定义
include mime.types;
#默认文件类型
default_type application/octet-stream;
#设定日志格式(自定义)
log_format ownformat ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for"‘;
access_log /home/nginx/log/http_access.log ownformat;
#对于普通应用,设为on可以减少文件拷贝次数,如果图片显示不正常把这个改成off。
sendfile on; #off模式拷贝路径:硬盘—>内核fs缓冲区—>用户空间—>内核socket缓冲区—>协议引擎
# on模式拷贝路径1: 硬盘—>内核fs缓冲区—>内核socket缓冲区—>协议引擎
# on模式拷贝路径2: 硬盘—>内核fs缓冲区—>协议引擎
tcp_nopush on #在linux/Unix系统中优化tcp数据传输,仅在sendfile开启时有效
#tcp_nodelay on; #TCP_NODELAY选项来禁用Nagle的缓冲算法,并在数据可用时立即发送与tcp_nopush互斥
keepalive_timeout 120; #长连接超时时间,单位是秒
send_timeout 30; #指定客户端的响应超时时间
gzip on; #开启gzip压缩输出
gzip_http_version 1.0; #压缩版本
gzip_comp_level 2; #压缩级别,1-10,数字越大压缩的越好
gzip_min_length 1k; #设置允许压缩的页面最小字节数
gzip_types text/plain application/x-javascript text/css application/xml; #压缩类型
gzip_disable "MSIE [1-6]."; #IE6及以下禁止压缩
}
#日志格式(自定义)
#$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
#$remote_user:用来记录客户端用户名称;
#$time_local: 用来记录访问时间与时区;
#$request: 用来记录请求的url与http协议;
#$status: 用来记录请求状态;成功是200,
#$body_bytes_sent :记录发送给客户端文件主体内容大小;
#$http_referer:用来记录从那个页面链接访问过来的;
#$http_user_agent:记录客户浏览器的相关信息;
#通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
http-server块
配置虚拟主机的相关参数,包含server全局块和location块
server全局块
server { #虚拟主机
listen 80; #监听端口
server_name localhost; #内网:主机名,外网:域名 可以是多个域名,用空格隔开
access_log /home/nginx/log/server_localhost_access.log ownformat;
index index.html index.htm index.jsp; #默认访问主页
root /nginx/www/webapps; #主目录
}
#nginx支持三种类型的虚拟主机配置
#- 基于ip的虚拟主机(一块主机绑定多个ip地址)
#- 基于域名的虚拟主机(server_name)
#- 基于端口的虚拟主机(listen不写ip,端口模式)
location块
# 配置请求的路由,将各种页面资源的处理情况映射到虚拟目录
location = / { #注意URL最好为具体路径。 精确匹配指定的路径,不包括子路径
[ configuration A ]
}
location / { #对当前路径及子路径下的所有对象都生效;
[ configuration B ]
}
location ~ URI {} { #~区分字符大小写
[ configuration C ]
}
location ^~ /images/ { #禁用正则表达式
[ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ { #~*不区分字符大小写
[ configuration E ]
}
upstream 块儿
#upstream可以实现反向代理
upstream reversproxy {
server 192.168.1.101:80;
server 192.168.1.102:80;
}
#upstream可以实现负载均衡
upstream httpds {
server 127.0.0.1:8050 weight=10 down;
server 127.0.0.1:8060 weight=1;
server 127.0.0.1:8060 weight=1 backup;
}
#- down:表示当前的server暂时不参与负载
#- weight:默认为1.weight越大,负载的权重就越大。
#- backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。