nginx 基本配置

来源:互联网 发布:保障网络和信息安全 编辑:程序博客网 时间:2024/06/06 05:37

一、nginx基本配置

user nobody;worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍events{    worker_connections 1024;  # 设置并发最大连接数}http{    server{            listen  80;  #监听的端口,监听到后访问 html/server1这个地址            server_name  192.168.1.2;  # 识别的域名            charset utf-8;  # 设置url编码            access_log  logs/server1.access.log combined; # off (关闭)             loction /     # 虚拟主机本地根目录(两种匹配模式,普通字符串匹配和正则匹配)                {                    index index.html index.htm  # 默认的首页                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1        }            location ^~ /test/ {                deny all; # 拒绝请求,返回403                 (allow all;) # 允许请求        }            #syntax:location [=|~|~*|^~|@]/url/{...}            #无开头引导字符或以=开头表示普通字符串匹配            #以~或~*开头表示正则匹配,~*表示不区分大小写            #^~开头表示关闭正则匹配的功能,普通模式下匹配到后就不继续寻在正则            #@    }    error_page 404  /404.html; #定义各类错误类型    error_page 403 @page403; # 发生403错误时指向http://www.xxx.xxx.com页面    location @page403{        proxy_pass http://www.xxx.xxx.com    }    server{            listen  192.168.1.3:80   # 监听的IP地址            server_name  192.168.1.3   # 设置虚拟主机的名称            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined            loction /                {                    index index.html index.htm                    root html/server2;   # IP地址与server2文件夹进行绑定        }    }}

二、nginx日志文件配置
在nginx中conf中的nginx.conf有一段关于日志文件的配置

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                     '$status $body_bytes_sent "$http_referer" '                     '"$http_user_agent" "$http_x_forwarded_for"';参数解析:                    $remote_addr:客户端IP地址$remote_user:客户端的用户名$request:请求的url$status:请求状态$body_bytes_sent:记录nginx服务器返回给用户的字节数$http_referer:客户访问的原网页(用户从哪里来)$http_user_agent:客户浏览器访问信息,比如用户通过火狐浏览器浏览则记录火狐浏览器的类型信息$http_x_forwarded_for:客户端IP地址

三、制作按时间切割日志文件的脚本
1.制作切割日志脚本cutlog.sh

D = $(data + %Y%m%d)mv /usr/local/nginx/logs/access.log ${D}.logkill -USR1 $(cat /usr/loacl/nginx/nginx.pid)

2.使用定时执行命令
(1)crontab -e 进入编辑
(2)输入 23 59 *** /bin/bash /usr/local/nginx/logs/cutlog.sh # 每天23:59定时执行cutlog.sh这个脚本
(3)保存

四、nginx的缓存配置
浏览网页时,浏览器会把网页上的一些信息(图片)存储到本地,第二次浏览的时速度加快。若本地这些信息过多,缓存文件就会非常大,需要定期清理。
vim nginx.conf打开nginx的默认配置

user nobody;worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍events{    worker_connections 1024;  # 设置并发最大连接数}http{    server{            listen  192.168.1.2:80  #监听这个IP地址,监听到后访问 html/server1这个地址            server_name  192.168.1.2            access_log  logs/server1.access.log combined; # off (关闭)             loction /     # 虚拟主机本地根目录                {                    index index.html index.htm  # 默认的首页                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1        }            location ~.*\.(jpg|png|swf)${    # 所有以.jpg|.png|.swf结尾的文件                   expires 30d;    # 设置每30天自动清除            }            localtion ~.*\.(css|js)?${                    expires 1h;   # 设置每1h自动清除            }    }    server{            listen  192.168.1.3:80   # 监听的IP地址            server_name  192.168.1.3   # 设置虚拟主机的名称            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined            loction /                {                    index index.html index.htm                    root html/server2;   # IP地址与server2文件夹进行绑定        }    }}

五、nginx的压缩功能配置
nginx支持gzip压缩技术,通过这个技术,可以把网页的内容大小压缩成原来的30%。
vim nginx.conf

user nobody;worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍events{    worker_connections 1024;  # 设置并发最大连接数}http{    server{            listen  192.168.1.2:80  #监听这个IP地址,监听到后访问 html/server1这个地址            server_name  192.168.1.2            access_log  logs/server1.access.log combined; # off (关闭)             gzip  on;   # 开启gzip压缩功能            gzip_min_length 1k; # 文件大小大于1k才压缩            gzip_buffers  4 16k; # 申请用于缓存的内存大小为4个16k的数据流            gzip_http_version 1.1 # 声明只有http版本为1.1的网页开启gzip压缩功能            gzip_vary on; # 开启判断客户端浏览器是否支持gzip压缩功能            loction /     # 虚拟主机本地根目录                {                    index index.html index.htm  # 默认的首页                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1        }            location ~.*\.(jpg|png|swf)${    # 所有已.jpg|.png|.swf结尾的文件                   expires 30d;    # 设置每30天自动清除            }            localtion ~.*\.(css|js)?${                    expires 1h;   # 设置每1h自动清除            }    }    server{            listen  192.168.1.3:80   # 监听的IP地址            server_name  192.168.1.3   # 设置虚拟主机的名称            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined            loction /                {                    index index.html index.htm                    root html/server2;   # IP地址与server2文件夹进行绑定        }    }}

六、nginx的自动列目录配置
当客户端通过浏览器访问服务器上的某一文件夹的时候,如果该文件夹有默认的首页文件index.html,那么用户就会自动访问到index.html这个网页.实现自动列目录需要的条件:1.访问文件夹下不存在index之类的默认首页文件 2.服务器配置了自动列表功能。

user nobody;worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍events{    worker_connections 1024;  # 设置并发最大连接数}http{    server{            listen  192.168.1.2:80  #监听这个IP地址,监听到后访问 html/server1这个地址            server_name  192.168.1.2            access_log  logs/server1.access.log combined; # off (关闭)             loction /     # 虚拟主机本地根目录                {                    index index.html index.htm  # 默认的首页                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1                    autoindex  0n; # 开启自动列目录        }    }    server{            listen  192.168.1.3:80   # 监听的IP地址            server_name  192.168.1.3   # 设置虚拟主机的名称            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined            loction /                {                    index index.html index.htm                    root html/server2;   # IP地址与server2文件夹进行绑定        }    }}

配置后即使nginx虚拟主机的安装目录/usr/local/nginx/html/server1下没有index.html或index.htm也可以返回整个目录结构,而不是403

这里写图片描述

六、nginx的优化
阻塞和非阻塞网络模型
同步阻塞模型,一请求一进程,当进程(线程)增加到一定程度后,更多CPU时间浪费到切换,性能下降,负载率不高,nginx是基于事件爱你的非阻塞多路复用模型,一个进程可以在短时间响应大量的请求。

user nobody;worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍worker_rlimit_nofile 655350;  # 每进程最大可打开文件描述符数量(网络端口,设备,磁盘文件),用完后新的连接会产生502类错误 worker_connections 200000; # 每个工作进程的最大连接数(一般一个浏览器会同时打开两条连接,如果反向代理,nginx到后端服务器的连接也会占用连接数,静态服务器最大连接maxClient = worker_connections * worker_processes / 2,反向代理maxClient = worker_connections * worker_processes / 4)use epoll; # 指明使用哪种网络模型epoll或kqueneworker_cpu_affinity 0001 0010 0100 1000  # 四核四进程,避免进程在cpu间切换的开销events{    worker_connections 1024;  # 设置并发最大连接数}http{    server{            listen  192.168.1.2:80  #监听这个IP地址,监听到后访问 html/server1这个地址            server_name  192.168.1.2            # access_log  logs/server1.access.log combined; # off (关闭)             access_log off # 关闭可减少IO开销,但一般不建议            error_log  logs/error.log crit  # 只记录严重错误日志            sendfile on; # 启用内核复制模式,减少复制次数            keepalive_timeout  30s; # 降低每个连接的alive时间,可在一定程度上提高可响应连接数,一般可适当降低            gzip on; # 启动内容压缩,有效降低网络流量            gzip_min_length 1000; # 过短的内容压缩效果不佳,压缩过程会浪费系统资源            gzip_comp_level 4; # 可选0~9,压缩级别越高,压缩率越高,对系统性能要求越高            gzip_type text/plain text/css application/json # 压缩内容类别                     open_file_cache max=655350 inactive=20s; # 静态文件缓存(最大缓存数量,文件为使用存活期),存放于内存            open_file_cache_valid 30s;# 验证缓存有效期时间间隔            open_file_cache_min_uses 2; # 有效期内文件最少使用次数            loction /     # 虚拟主机本地根目录                {                    index index.html index.htm  # 默认的首页                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1        }    }    server{            listen  192.168.1.3:80   # 监听的IP地址            server_name  192.168.1.3   # 设置虚拟主机的名称            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined            loction /                {                    index index.html index.htm                    root html/server2;   # IP地址与server2文件夹进行绑定        }    }}