Nginx
nginx操作指令
nginx只有几个命令行参数。与许多其他软件系统不同,配置完全是通过配置文件完成的 。摘自nginx官网
参数 | 意义 |
---|---|
-?, -h | 打印nginx的指令帮助文档 |
-v | 打印nginx版本 |
-V | 打印nginx版本、编译版本以及配置参数 |
-t | 仅仅检查nginx的配置文件正确性,并输出检验的配置文件路径 |
-q | 在配置测试期间禁止非错误消息 |
-s | stop(停止)、 quit(退出)、reopen(重启)、reload(重新加载配置文件)(version > 0.7.53) |
-c | 指定启动的配置文件 |
-p | 设置前缀路径(默认是:/usr/local/nginx/)(version > 0.7.53) |
-g | 设置配置文件外的全局指令(version > 0.7.4) |
nginx配置文件参数介绍
英文功底好,还是建议直接去看官方文档
# 使用的用户和组
user www www
# 指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,例如两个四核CPU,则总核数为8)
worker_processes 8
# 指定错误日志存放的路径,错误日志记录级别可选项为:[ debug | info | notice | warn | error | crit]
error_log /data1/logs/nginx_error.log crit
# 在日志格式样式中,支持自定义日志格式
# 变量$remote_addr和$http_x_forwarded_for用于记录IP地址;
# 变量$remote_user用于记录远程客户端用户名称;
# 变量$time_local用于记录访问时间与时区;
# 变量$request用于记录请求URL与HTTP协议;
# 变量$status用于记录请求状态,例如成功时状态为200,页面找不到时状态为404;
# 变量$body_bytes_sent用于记录发送给客户端的文件主体内容大小;
# 变量$http_referer用于记录是从哪个页面链接访问过来的;
# 变量$http_user_agent用于记录客户端浏览器的相关信息。
log_format mylogformat $http_x_forwarded_for - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"
# 启用自定义格式来记录日志
access_log /data1/logs/access.log mylogformat buffer=32k
# 指定 pid 存放的路径
pid /usr/local/webserver/nginx/nginx.pid
# 指定文件描述符数量
worker_rlimit_nofile 51200
events
{
# 事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport,Linux系统推荐采用epoll模型,FreeBSD系统推荐采用kqueue模型
use epoll
# 最大连接数,默认为512
worker_connections 51200
# 设置网路连接序列化,防止惊群现象发生,默认为on
# 惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能。
accept_mutex on
# 设置一个进程是否同时接受多个网络连接,默认为off
multi_accept on
}
http
{
# 文件扩展名与文件类型映射表
include mime.types
# 默认文件类型,默认为text/plain
default_type application/octet-stream
# 允许sendfile方式传输文件,默认为off,可以在http块,server块,location块
sendfile on
# 每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
sendfile_max_chunk 100k
# 连接超时时间,默认为75s,可以在http,server,location块。
keepalive_timeout 65
# 开启gzip压缩
gzip on
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
#设定请求缓冲
client_header_buffer_size 128k
large_client_header_buffers 4 128k
# 配置负载均衡
upstream www.monk.com{
# weight 表示权重
# max_failds 最大失败次数
# fail_timeout 失败超时时间
server 192.168.1.1 weight=1 max_fails=3 fail_timeout=30s
server 192.168.1.2 weight=2 max_fails=3 fail_timeout=30s
server 192.168.1.3 weight=3 max_fails=3 fail_timeout=30s
# ip_hash解决负载均衡时session丢失的问题,配置了ip_hash后,nginx会对于同一个IP发过来的请求继续路由到同一个server上去处理
ip_hash;
### 如果权重、ip_hash都没有配置,nginx默认的负载均衡策略就是轮询 ####
}
server
{
# 监听的端口
listen 80
# 主机名称(可以配置多个,空格隔开即可)
server_name www.monk.com
# 单连接请求上限次数。
keepalive_requests 120
# 请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写,/为匹配全部请求url
# 详细的介绍可以参见 http://www.nginx.cn/115.html
location ~*^.+$ {
# 请求转发地址
proxy_pass http://www.baidu.com;
# 拒绝的IP
deny 127.0.0.1;
# 允许的IP
allow 192.168.0.0;
# 默认首页文件,顺序从左到右,如果找不到index.html文件,则查找index.htm文件作为首页
index index.html index.jsp;
# HTML网页文件存放的目录
root /data0/htdocs/server2;
}
# 通过nginx实现动静分离,也是对于不同的地址拦截,然后做不同的处理,比方:
location ~* \.(mp4|mp3|jpg|png)$ {
# 如果请求地址以mp4|mp3|jpg|png结尾,就去resource/meta目录下取对应资源
# resource/meta目录这里是相对路径也可以是绝对路径,把这些静态资源放到对应的目录下即可
root resource/meta
# 失效时间20天
expires 20d
}
# 通过nginx实现动静分离,也是对于不同的地址拦截,然后做不同的处理,比方:
location ~* \.(html|js|css)$ {
# 如果请求地址以html|js|css结尾,就去resource/static目录下取对应资源
# resource/static目录这里是相对路径也可以是绝对路径,把这些静态资源放到对应的目录下即可
root resource/static
# 失效时间3天
expires 3d
}
location ~ \.do$ {
# 对于以.do开始的请求(几乎是全部请求全部路由到baidu的首页)
proxy_pass http://www.baidu.com;
}
# 对于其他类型的静态资源或者自己规则的请求,都可以在这里进行配置
....
}
# 可以配置多个的
server{
......
}
}
参考文献
- Nginx官网完整示例
- Nginx官网完整示例2
- 《实战Nginx:取代Apache的高性能Web服务器》