Nginx是主流的web负载、代理转发工具,这里说明nginx的配置。其配置文件是
nginx/conf/nginx.conf
文件。
总览ngnix.conf
user nobody;
worker_processes 1;
error_log logs/error.log error;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
upstream myClusterServer1 {
server 127.0.0.1:8081 weight=5;
server 127.0.0.1:8082 weight=5;
server 127.0.0.1:8083 weight=5;
}
server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
location / {
root html;
index index.html index.htm index.jsp;
proxy_pass http://myClusterServer1;
proxy_redirect defaut;
proxy_connect_timeout 10;
}
error_page 404 /404.html;
error_page 500 502 503 503 /50x.html;
location = /50x.html{
root html;
}
}
}
1.创建进程的用户和用户组
user nobody
2.服务进程数量,一般等于CPU数量
worker_processes 1;
3.全局错误日志定义
建议开启error级别日志,如输出错误日志或以上内容到 logs/error.log
文件:
error_log logs/error.log error;
可选级别:
级别 | 说明 |
---|---|
debug | 调试内容或以上 |
info | 信息内容或以上 |
notice | 通知内容或以上 |
warn | 警告内容或以上 |
error | 错误内容或以上 |
crit | 致命异常内容或以上 |
4.记录进程ID的文件
pid logs/nginx.pid;
5.启用epoll多路复用提高性能
epoll
是多路复用IO(I/O Multiplexing)中的一种方式,但仅用于linux2.6以上内核,可以大大提高nginx的性能。
Linux建议使用epoll,FreeBSD建议使用kqueue。
events {
use epoll;
worker_connections 1024;
}
说明:
worker_connections
表示一个worker_processe
允许的最近并发连接数量。
6.常用http设置
http {
include mime.types;
default_type application/octet-stream;
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
}
7.http>gzip配置
ngnix可开启gzip
功能来降低数据大小,以提高数据传输效率。gzip常用配置如下:
http {
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_vary on;
gzip_types text/plain text/javascript text/css application/xmlapplication/x-javascript application/json;
}
开启gzip
gzip on;
最小压缩文件大小
gzip_min_length 1k;
压缩缓冲区
gzip_buffers 4 16k;
http的协议版本(1.0/1.1)
- 默认1.1,前端如果是squid2.5请使用1.0。
gzip_http_version 1.1;
gzip压缩比
- 1压缩比最小处理速度最快。
- 9压缩比最大但处理速度最慢(传输快但比较消耗cpu)。
gzip_comp_level 2;
自动识别是否压缩
- 有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,可启用vary,以便根据客户端的HTTP头来判断是否需要压缩。
gzip_vary on;
gzip压缩类型
gzip_types text/plain text/javascript text/css
注意:不用添加text/html,否则会有警告信息。
8.http>upstream 负载均衡服务器列表
http {
upstream myClusterServer1 {
server 127.0.0.1:8081 weight=5;
server 127.0.0.1:8082 weight=5;
server 127.0.0.1:8083 weight=5;
}
server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
location / {
root html;
index index.html index.htm index.jsp;
proxy_pass http://myClusterServer1;
proxy_redirect defaut;
proxy_connect_timeout 10;
}
error_page 404 /404.html;
error_page 500 502 503 503 /50x.html;
location = /50x.html{
root html;
}
}
}
server
指定服务器域名或IP:端口号
表示服务器地址。weight
参数表示权值,权值越高被分配到的几率越大。
server 127.0.0.1:8081 weight=5;
9.http>server配置服务节点
http {
upstream myClusterServer1 {
server 127.0.0.1:8081 weight=5;
server 127.0.0.1:8082 weight=5;
server 127.0.0.1:8083 weight=5;
}
server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
location / {
root html;
index index.html index.htm index.jsp;
proxy_pass http://myClusterServer1;
proxy_redirect defaut;
proxy_connect_timeout 10;
}
error_page 404 /404.html;
error_page 500 502 503 503 /50x.html;
location = /50x.html{
root html;
}
}
}
- nginx监听的端口号。
listen 80;
- 侦听域名可以有多个,用空格隔开。
server_name localhost 127.0.0.1;
- 字符编码方式
charset utf-8;
- 设定本虚拟主机的访问日志。
- 关闭日志可以减少IO,提高性能。
access_log logs/host.access.log main;
- http>server>location默认请求配置
location / {
root html;
index index.html index.htm index.jsp;
proxy_pass http://myClusterServer1;
proxy_redirect defaut;
proxy_connect_timeout 10;
}
- 定义服务器的默认网站根目录位置
root html;
- 定义首页索引文件的名称
index index.html index.htmindex.jsp;
- 请求转向myClusterServer1定义的服务器列表
proxy_pass http://myClusterServer1;
- 代理连接超时时间
根代理服务器连接的超时时间,必须留意这个timeout
时间不能超过75秒,当一台服务器当掉时,过10秒转发到另外一台服务器。
proxy_connect_timeout 10;
error_page
配置错误重定向地址,
可配置一个错误重定向,如404
错误重定向到/404.html
路径:
error_page 404 /404.html;
亦可批量重定向,如50x错误通配符:
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}