Nginx配置2-http块配置

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机器。

参考

Nginx sendfile原理详解

TCP_NODELAY 和 TCP_NOPUSH的解释

Nginx配置2-http块配置

上一篇:《【前端性能】必须要掌握的原生JS实现JQuery》


下一篇:JS基础 - 手写深拷贝