Nginx配置文件详解

(一)nginx.conf模块

1、全局块

2、events块

3、http块

(二)全局参数详解

user  nobody;

#Nginx worker进程运行的用户及用户组,默认:user nobody nobody

worker_processes  1;

#Nginx worker进程个数:其数量直接影响性能。

ssl_engine device;

#ssl硬件加速。用户可以用OpneSSL提供的命令来查看是否有ssl硬件加速设备:openssl engine -t

error_log  logs/error.log;

error_log  logs/error.log  notice;

error_log  logs/error.log  info;

#error日志的设置,leve的取值范围是debug、info、notice、warn、error、crit、alert、emerg从左至右级别依次增大。当level的级别为error时,error、crit、alert、emerg级别的日志就都会输出。大于等于该级别会输出,小于该级别的不会输出。

pid        logs/nginx.pid;

#pid文件(master进程ID的pid文件存放路径)的路径

(三)events参数详解

use epoll:

        #使用epoll的I/O 模型(值得注意的是如果你不知道Nginx该使用哪种轮询方法的话,它会选择一个最适合你操作系统的)

补充说明:与apache相类,nginx针对不同的操作系统,有不同的事件模型

           A)标准事件模型

                Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll

           B)高效事件模型

Kqueue:

        使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。

 Epoll:

        使用于Linux内核2.6版本及以后的系统。

/dev/poll:

        使用于Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。

Eventport:

        使用于Solaris 10. 为了防止出现内核崩溃的问题, 有必要安装安全补丁,查看linux版本号可以使用 cat /proc/version命令

accept_mutex on;

        #设置网路连接序列化,防止惊群现象发生,默认为on

multi_accept on;

        #设置一个进程是否同时接受多个网络连接,默认为off

worker_connections 1024;

        # 最大连接数

client_header_buffer_size 4k;

        #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为系统分页大小。查看系统分页可以使用 getconf PAGESIZE命令;

open_file_cache max=2000 inactive=60s

        #为打开文件指定缓存,默认是没有启用的,max指定缓存最大数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存 打开文件最大数量为我们再main配置的worker_rlimit_nofile参数。

open_file_cache_valid 60s

        #这个是指多长时间检查一次缓存的有效信息。如果有一个文件在inactive时间内一次没被使用,它将被移除。

open_file_cache_min_uses 1

        #open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如果有一个文件在inactive时间内一次没被使用,它将被移除。

(四)http参数详解

include mime.types;

        #导入支持的文件类型

default_type application/octet-stream;

        #设置默认的类型,会提示下载不匹配的类型文件

sendfile on;

        #实现文件零拷贝

tcp_nopush on;

        #在开启了sendfile的情况下,合并请求后统一发送给客户端。

tcp_nodelay off;

        #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off的时候,延迟0.2发送,默认为on,不延迟发送,立即发送用户相应的报文。

keepalive_timeout 65 65;

        #设置会话保持时间

gzip on;

        #开启文件压缩

gzip_min_length 1k;

        #允许压缩的页面的最小字节数,页面字节数从header偷得content-length中获取.默认是0,不管页面多大都进行压缩.建议设置成大于1k的字节数,小于1k可能会越压越大

server_names_hash_bucket_size 128;

        #服务器名字的hash表大小

large_client_header_buffers 4 64k;

        #设定请求缓

client_max_body_size 8m;

        #设定请求缓

server

        #server块里的任意配置都是基于http块里的已有配置的

listen 80;

        #设置监听的地址和端口

listen 443 ssl;

        # 监听端口 HTTPS

server_name localhost

        # 域名可以有多个,用空格隔开,并支持正则表达式,如*.magedu.com www.magedu.* www.(site\d+).magedu.com$ default_server

rewrite ^(.*) https://$server_name$1 permanent;

        # HTTP 自动跳转 HTTPS

charset utf-8

        #设置编码格式

access_log /var/log/nginx/access.log access;

        # 定义本虚拟主机的访问日志

ssl_certificate C:\WebServer\Certs\certificate.crt;

        #配置包含包含的数字证书

ssl_certificate_key C:\WebServer\Certs\private.key;

        #配置加密和保护信息安全的关键字符串

ssl_session_cache shared:SSL:1m;

        # 1MB 缓存(约 400 个会话)

ssl_session_timeout 5m;

        # 延长会话复用时间,减少握手开销

ssl_protocols SSLv2 SSLv3 TLSv1;        

        #启用指定协议版本。

备注:SSLv2/SSLv3已被证实存在严重漏洞(如POODLE攻击),TLSv1也已过时,替换为仅允许安全协议:ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

        #定义加密套件优先级顺序:

        !ADH:禁用匿名Diffie-Hellman(无证书验证,易中间人攻击)。

         !EXPORT56:排除56位弱加密算法。

         RC4+RSA:包含已被破解的RC4算法(不安全)。

         +HIGH:+MEDIUM:+LOW:按强度分级启用密码。

        +SSLv2:+EXP:启用已废弃的SSLv2相关算法和导出级弱密码。

备注:包含RC4、SSLv2套件等不安全算法。替换为现代安全套件 ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256";

ssl_prefer_server_ciphers on;

        #服务端优先选择加密套件。避免客户端弱算法偏好影响安全,增强可控性

location /oauth/{

        proxy_pass https://localhost:13580/oauth/;

        proxy_set_header HOST $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

#配置地址拦截转发,解决跨域验证问题

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

        expires 10d;

}

#图片缓存时间设置

location ~ .*\.(js|css)?$ {

        expires 1h;

}

#JS和CSS缓存时间设置

upstream webhost {

        server 192.168.0.5:6666 weight=2;

        server 192.168.0.7:6666 weight=3;

}

#upstream的负载均衡,weight(权重).可以根据机器配置定义权重.权重越高被分配到的几率越大

upstream webhost {

        ip_hash;

        server 192.168.0.5:6666 ;

        server 192.168.0.7:6666 ;

}

#upstream的负载均衡,ip_hash分配方式,每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题

#下方是upstream负载均衡例子,注意proxy_pass参数设置

server{

        listen 80;

        server_name mongo.demo.com;

        #对 "/" 启用反向代理

        location / {

                proxy_pass http://webhost;

                proxy_redirect off;

                proxy_set_header X-Real-IP $remote_addr;

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

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                #这些是一些反向代理的配置,可选 begin

                proxy_set_header Host $host;

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

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

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

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

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

                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服务器传

                #这些是一些反向代理的配置,可选 end

        }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值