Nginx 功能丰富,可作为 HTTP 服务器,也可作为反向代理服务器,邮件服务器,支持 FastCGI、SSL、Virtual Host、URL Rewrite、Gzip 等功能,并且支持很多第三方的模块扩展。
正向代理与反向代理,Nginx 在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx 可以根据不同的正则匹配,采取不同的转发策略。
Nginx 提供的负载均衡策略有 2 种:内置策略和扩展策略。内置策略又为轮询,加权轮询,Ip hash。
Ip hash 算法,对客户端请求的 ip 进行 hash 操作,然后根据 hash 结果将同一个客户端 ip 的请求分发给同一台服务器进行处理,可以解决 session 不共享的问题。
Nginx 配置参数说明:
#运行用户
user somebody;
#启动进程,一般设置为 CPU 个数
worker_processes 1;
#指定日志路径,级别,这个设置可以放入全局块,http,server 块
#debug|info|notice|warn|error|crit|alert|emerg
error_log log/error.log debug;
#指定 nginx 进程运行文件存放地址
pid /nginx/pid/nginx.pid;
events {
#设置网路连接序列化,防止惊群现象发生,默认为 on
accept_mutex on;
#设置一个进程是否同时接受多个网络连接,默认为 off
multi_accept on;
#事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
#use epoll;
#最大连接数
worker_connections 1024;
}
http {
#设置 mime 类型
include mime.types;
#默认文件类型
default_type application/octet-stream;
#自定义格式
log_format logFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
#记录访问日志,不记录访问日志 access_log off;
access_log log/access.log logFormat;
#允许 sendfile 方式传输文件,默认为 off,可以在 http,server,location 块
sendfile on;
#每个进程每次调用传输数量不能大于设定的值,默认为 0,即不设上限。
sendfile_max_chunk 100k;
#客户端连接超时时间,可以在 http,server,location 块
keepalive_timeout 65;
#Nginx 服务器与被代理的服务器建立连接的超时时间,默认 60 秒
proxy_connect_timeout 1;
#Nginx 服务器想被代理服务器组发出 read 请求后,等待响应的超时间,默认为 60 秒
proxy_read_timeout 1;
#Nginx 服务器想被代理服务器组发出 write 请求后,等待响应的超时间,默认为 60 秒
proxy_send_timeout 1;
#Nginx 服务器提供代理服务的 http 协议版本 1.0,1.1,默认设置为 1.0 版本
proxy_http_version 1.0 ;
#支持客户端的请求方法,post 或者 get
#proxy_method get;
#客户端断网时,Nginx 服务器是否终端对被代理服务器的请求,默认为 off
proxy_ignore_client_abort on;
#Nginx 服务器不处理设置的 http 请求头数据,这里空格隔开可以设置多个
proxy_ignore_headers "Expires" "Set-Cookie";
#如果被代理服务器返回的状态码为 400 或者大于 400,设置的 error_page 配置起作用,默认为 off
proxy_intercept_errors on;
#存放 http 报文头的哈希表容量上限,默认为 512
proxy_headers_hash_max_size 1024;
#Nginx 服务器申请存放 http 报文头的哈希表容量大小,默认为 64
proxy_headers_hash_bucket_size 128;
#反向代理 upstream 中设置的服务器组,出现故障时,被代理服务器返回的状态值
#error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off
proxy_next_upstream timeout;
#默认为 on,如果我们在错误日志中发现“SSL3_GET_FINSHED:digest check failed”的情况时,可以将该指令设置为 off
#proxy_ssl_session_reuse on;
#当配置多个 server 节点时,需要手动设置大一点
server_names_hash_bucket_size 512;
#服务器列表
upstream serverlist {
server localhost:7878;
#热备
server localhost:3333 backup;
}
#错误页
error_page 404 https://localhost.com/error.html;
#server 可以配置多个
server {
#单连接请求上限次数
keepalive_requests 120;
#监听端口
listen 8800;
#监听地址
server_name localhost;
# 编码格式,避免 url 参数乱码
charset utf-8;
#一个 server 下可以有多个 location,用来匹配同一个域名下不同的 uri 访问
#请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
location ~*^.+$ {
#根目录
#root path;
#设置默认页
#index vv.txt;
#请求转向 serverlist 定义的服务器列表
proxy_pass http://serverlist;
#拒绝的 IP
deny 127.0.0.1;
#允许的 IP
allow 172.18.5.54;
}
}
}