大数据第五天:

大数据第五天:

学习目标:

掌握nginx集群

Nginx的功能特性

基本Http服务,可以作为Http代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL 高级Http服务,可以进行自定义配置,支持虚拟主机,支持URL重定向,支持网络监控,支持流媒体传输等邮件代理服务器,支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能

nginx的配置文件基本配置

主要描述nginx.conf文件的内容

nginx.conf文件结构

主要由三块组成 全局块 events块 http块,http块中包含http全局块和多个server块,每个server块中包含server全局块和多个location块,采用就近原则生效

全局块

配置一些影响整体运行的指令,通常有服务器用户组 允许生成的worker process nginx.pid存放路径 日志存放路径 类型 配置文件引入

events块

影响nginx服务器与用户的网络连接,这一块的设置对服务的性能影响较大。通常有是否开启对WP下的网络进行序列化 是否允许同时接受多个网络连接 事件驱动模型 每个WP可以同时支持处理的最大连接数

http块

重要组成部分,代理、缓存和日志定义、第三方模块的配置。 通常配置 文件引入 MIME-TYPE定义 日志自定义 是否使用sendfile传输文件 连接超时时间 单连接请求数上限

具体配置

由于nginx的配置大部分是不限定具体位置的(可以在多个地方配置),所以此处将依次进行列举

配置用户组

配置alleyz用户 admin组下有启停权限

user alleyz [admin];

#所有用户具有启停权限
user nobody nobody;12345

配置运行生成的worker process

如果设置为数字,启动以后就具有多少个worker process

设置为auto则自动检测

worker_processes number | auto;

配置pid文件存放路径

认存放在logs/nginx.pid

#必须包含文件名称
pid logs/nginx_alleyz.pid;12

配置错误日志文件的存放路径

可在全局块、http块 server块 location块配置

error_log file | stderr [ DEBUG | info | notice | warn | error | crit | alert | emerg];

设置是否允许同事接受多个连接 events

multi_accept on | off; #默认关闭

事件驱动模型的选择 events

可选择的内容有:select poll kqueue epoll rtsig /dev/poll eventport

use epoll;

配置最大连接数 events

允许每一个WP同事开启的最大连接数。此值不能大于操作系统支持的打开的最大文件句柄数.

worker_connections number; #默认值 5121

MIME-Type http server location

default_type mime-type; #默认为 text/plain

自定义服务日志

access_log 可在http server location中配置; log_format只能在http中配置。
注意 前文提到的error_log 配置的是nginx的运行日志,此处指的是应答前端请求的服务日志。可以对日志的格式、大小、输出进行配置,有access_log log_format指令, log_format 的string整体需要用’括起来,变量名称使用双引号括起来

log_format name string;
access_log path [format [buffer=size]];

log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “ r e q u e s t " ′ ​ ′ request" ' ​ ' request"status b o d y b y t e s s e n t " body_bytes_sent " bodybytessent"http_referer” ’
​ ‘“ h t t p u s e r a g e n t " " http_user_agent" " httpuseragent""http_x_forwarded_for”’;
access_log logs/access.log main;

#如果取消日志记录
access_log off;

配置sendfile方式传输文件

相关指令 sendfile sendfile_max_chunk,默认开启

sendfile on | off;
sendfile_max_chunk size; #设置为0为限制12

配置连接超时时间

http块 server块 location块,设置用户会话连接的保持时间

keepalive_timeout timeout[header_timeout];1

Location(难点)

location匹配顺序

  1. "="前缀指令匹配,如果匹配成功,则停止其他匹配
  2. 普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配)
  3. 正则表达式指令匹配,按照配置文件里的顺序,成功就停止其他匹配
  4. 如果第三步中有匹配成功,则使用该结果,否则使用第二步结果

注意点

  1. 匹配的顺序是先匹配普通字符串,然后再匹配正则表达式。另外普通字符串匹配顺序是根据配置中字符长度从长到短,也就是说使用普通字符串配置的location顺序是无关紧要的,反正最后nginx会根据配置的长短来进行匹配,但是需要注意的是正则表达式按照配置文件里的顺序测试。找到第一个比配的正则表达式将停止搜索。
  2. 一般情况下,匹配成功了普通字符串location后还会进行正则表达式location匹配。有两种方法改变这种行为,其一就是使用“=”前缀,这时执行的是严格匹配,并且匹配成功后立即停止其他匹配,同时处理这个请求;另外一种就是使用“^~”前缀,如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。

匹配模式及顺序

location = /uri    =开头表示精确匹配,只有完全匹配上才能生效。

location ^~ /uri   ^~ 开头对URL路径进行前缀匹配,并且在正则之前。

location ~ pattern  ~开头表示区分大小写的正则匹配。

location ~* pattern  ~*开头表示不区分大小写的正则匹配。

location /uri     不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。

location /      通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。

反向代理的配置

反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器

​ 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

Nginx 反向代理的指令不需要新增额外的模块,默认自带 proxy_pass 指令,只需要修改配置文件就可以实现反向代理。

只要新建一个 vhost.conf,加入如下内容(记得修改 ip 和域名为你的 ip 和域名)。修改nginx.conf,添加 include quancha.conf 到http{}段, reload nginx就可以了。

Nginx 反向代理模板:

#设定负载均衡的服务器列表

#weigth参数表示权值,权值越高被分配到的几率越大

upstream tomcat{

server your_IP:8080;           

}

server {

#侦听的80端口

listen       80;

#server_name 后面跟上主机IP或域名,如果是本地测试,可以写成localhost

server_name  your_IP;

location / {

    index index.html index.jsp;

    proxy_pass   http://tomcat;    #在这里设置一个代理,和upstream的名字一样

    #以下是一些反向代理的配置可删除

    proxy_redirect             off; 

    #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

    proxy_set_header           Host $host; 

    proxy_set_header           X-Real-IP $remote_addr; 

    proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; 

    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

	proxy_max_temp_file_size 0;

	client_max_body_size       10m; #允许客户端请求的最大单文件字节数

    client_body_buffer_size    128k; #缓冲区代理缓冲用户端请求的最大字节数

    proxy_connect_timeout      300; #nginx跟后端服务器连接超时时间(代理连接超时)

    proxy_send_timeout         300; #后端服务器数据回传时间(代理发送超时)

    proxy_read_timeout         300; #连接成功后,后端服务器响应时间(代理接收超时)

    proxy_buffer_size          4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小

    proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

    proxy_busy_buffers_size    64k; #高负荷下缓冲大小(proxy_buffers*2)

    proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传

}

}

  1. 掌握nginx下的session共享问题 (难点)
    1. nginx和两个tomcat集群之后,如果所有的tomcat都运行一个项目。存在session不一致的问题

4、nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,ip_hash是在upstream配置中定义的:

upstream nginx.example.com

​ {

​ server 192.168.74.235:80;

​ server 192.168.74.236:80;

​ ip_hash;

​ }

​ server

​ {

​ listen 80;

​ location /

​ {

​ proxy_pass

http://nginx.example.com;

​ }

​ }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值