Nginx常用配置与命令

 一、指令说明

Nginx指令说明
worker_processes 配置Nginx的工作进程数,一般为Cpu总核心数或者总核心数的两倍
events控制Nginx处理连接的方式
httpNginx 处理 http 请求的主要配置块,大多数配置都在这里面进行
worker_connections 配置 Nginx 允许单个进程并发连接的最大请求数
include 用于引入配置文件
default_type 设置默认文件类型
sendfile 默认值为 on ,表示开启高效文件传输模式
keepalive_timeout 设置长连接超时时间(单位:秒)
serverNginx 中主机的配置块,可用于配置多个虚拟主机
listem 监听端口,默认监听 80 端口
server_name 

设置主机域名;除了可以精准配置方式外,还可以利用通配符(*)与正则表达式设置域名,实现域名的泛解析 。如:server name  *.test.com

location server 中对应目录级别的控制块 ,可以有多个
root 设置主机站点根目录地址,使用反向代理的时候可以用作设置缓存目录等
index 指定默认索引文件(首页)
error_page自定义错误页面
error_log

      存放错误日志(参数1:存在路径;参数2:日志等级);debug、info、notice、warn、error 和 crit ,日志记录详细程度依次递减, debug 记录的内容最详细, crit 记录的内容最简洁。 

      error_log 指令可以在main、http、server 、location 块中设置,配置方式相同。

     关闭日志: error_log /dev/null ;

autoindex开启目录列表功能;在 http块中,表示用于对所有站点都有效 ;在server 块中,表示对指定站点有效;在location块中,表示对某个目录起作用。
autoindex_exact_size设置精准显示文件大小:on/off
autoindex_localtime文件最后修改时间格式:on/off
proxy_set_header在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息
proxy_connect_timeout配置 Nginx 与后端代理服务器尝试建立连接的超时时间
proxy_read_timeout配置 Nginx 向后端服务器组发出 read 请求后,等待响应的超时时间
proxy_send_timeout配置 Nginx 向后端服务器组发出 write 请求后,等待响应的超时时间
proxy_redirect用于修改后端服务器返回的响应头中的 Location 和 Refresh
upstream web_server负载均衡配置模块
proxy_store用于开启本地缓存
proxy_store_access设置缓存的读写规则
proxy_temp_path设置反向代理时接收的数据临时存储文件的目录
负载均衡参数参数值
weight权值,权值越高则被分配到的概率越大;server 192.168. 78.128 weight=1 max_fails=1 fail_timeout=2 ;
max_fails允许请求失败的次数,默认为i。当超过最大次数时,返回 proxy_ next_ upstream 指令定义的错误
fail_timeout在经历了max_fails次失败后,暂停服务的时间 。 且在实际应用中 max_fails 一般与 fail_ timeout 一起使用
backup预留的备份机器
down表示当前的 server 暂时不参与负载均衡

 二、location匹配规则

location 可以同时定义多个,当 一个配置文件中同时出现多个 location 时,普通location 之间遵循“最大前缀匹配”原则 。 通俗地讲就是,匹配度最高的 location 将会执行。

当最大前缀 location 与正则 location 同时存在时,如果正则 location 匹配成功,则不会执行最大前缀 location 

前缀说明(优先级1为最高)
/最大前缀匹配(优先级:4)
=根据其后的指定模式进行精准匹配 。例:在访问时要与 /html/aaa/index.html 完全一致才会执行其后的指令块(优先级:1)
~正则匹配:使用正则表达式完成 locat ion 的匹配,区分大小写(优先级:3)
~*正则匹配:使用正则表达式完成 location 的匹配,不区分大小写(优先级:3)
^~非正则匹配:不使用正则表达式,完成以指定模式开头的 location 匹配(优先级:2)
@用于定义一个 location 块,且该块不能被外部客户端所访问,只能被Nginx 内部配置指令所访问
user nginx nginx; #启动nginx工作进程的用户和组,用root肯定是不安全的
#设置工作进程数量,也可以使用“auto”,表示自动分配,一般分配为等于CPU核心数。
worker_processes 1;
#将CPU核心与Nginx工作进程绑定,防止工作进程在不同的cpu核心上飘动。可以减少cpu对进程的资源分配与回收和内存管理等。提升nginx的性能。
#八核cpu可以使用八位的二进制位表示,如果是四核心也可以用四位,如:worker_cpu_affinity 0001 0010 0100 1000;
#也可以直接使用auto,如:worker_cpu_affinity auto;
worker_cpu_affinity 00000001 00000010 00000100 00001000;
#工作进程的最大连接数,包括了nginx的所有连接(客户端和代理服务器)
#且nginx的实际并发连接数不能超过linux系统级别的最大打开文件数量限制
worker_rlimit_nofile 100000;
events{
    #每个工作进程的最大连接数。linux默认的连接数也是1024,可以将linux和nginx的连接数改高一点
    #作为web服务器可以有1024个连接,
    #作为反向代理则1024/2个客户端连接,还有一半用来跟真实服务器连接
    worker_connections 1024; 
    #让工作进程尽可能多地接受请求。让工作进程一次性地接受监听队列里的所有请求来处理。如果multi_accept的值设为off,那么工作进程必须一个一个地接受监听队列里的请求。
    #如果web服务器面对的是一个持续的请求流,那么启用multi_accept可能会造成worker进程一次接受的请求大于worker_connections指定可以接受的请求数。这就是overflow,这个overflow会造成性能损失,overflow这部分的请求不会受到处理。
    multi_accept on; #默认off
}
upstream test{ 
	  server 127.0.0.1:8088; 
}
http{
    include mime.types; #载入mime.types文件,此文件保存了文件的mime映射,标识文件类型
    default_type application/octet-stream; #mime.types中未标识的mime映射类型,皆以此方式标识
    #access log 日志格式
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for" ';
    sendfile on; #启用文件传输,如果是作为web服务器使用,可以开启此选项,提升静态资源的传输速度
    keepalive_timeout 60; #设置长连接的保持时间,如果想在浏览器看到效果:keepalive_timeout 60 60;
    #一次长连接中允许的最大请求次数,默认为100次,如果一个页面中所需的请求次数过高,可以调高一点
    keepalive_request 100; 
    #gzip压缩配置
    gzip on; #开启gzip,off关闭
    gzip_disable "MSIE [1-6]\."; #IE 1-6不压缩
    gzip_min_length 1000; #小于1000字节的不压缩
    gzip_comp_level 3;   #压缩级别,低到高1-9;建议3,不要超过5。降低带宽,消耗cpu。
    gzip_types text/plain application/x-javascript text/css application/xml image/jpeg image/png image/gif;   #压缩的文件类型
    
    #开启文件缓存
    open_file_cache max=10000 inactive=60s; ##最大缓存10000个文件,非活动数据超时时长60s
    open_file_cache_min_uses 5;#60秒内至少被命中五次才被标记为活动数据
    open_file_cache_valid 60s;#每隔60秒检查一次缓存数据的有效性
    open_file_cache_errors on;#缓存错误信息

    server{
        listen 80;    #监听80端口号
        server_name test.com; #监听域名,使用域名的时候配合upstream一起使用
        #SSL证书配置
        listen 443 ssl;    
        server_name test.com;	
        ssl_certificate   cert/_.test.com.crt;
        ssl_certificate_key  cert/_.test.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        
        #设置access_log日志
        access_log logs/site.access.log main;
        client_max_body_size 30m; #设置最大请求body大小。默认1m
        aio on; #启用异步io,需要编译时开启配置;
        #Direct I/O;一般结合sendfile使用,任何大于4M的文件都将以Direct I/O的形式直接从硬盘读取,小于4m的使用sendfile读取;默认关闭
        directio 4m; 
        location / {
            root cache;  #缓存目录
            proxy_store on;  #用于开启本地缓存
            proxy_store_access user:rw group:rw all:r; #设置缓存的读写规则
            proxy_temp_path cache_tmp;  #设置反向代理时接收的数据临时存储文件的目录
            #利用正则表达式匹配缓存目录中的文件、目录或符号链接是存在
            #!-e 表示检查一个文件、目 录或符号链接是否存在
            #$request_filename 表示当前请求的文件路径或 URI
            if(!-e $request_filename){
                proxy_pass http://test;#域名test.com的请求全部转发到Web服务器 127.0.0.1:8088
            }
            proxy_set_header Host $host; #第1个参数用于表示字段名称,第2个参数表示字段值
            proxy_set_header X-Real- IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            set $limit_rate 10K; #限制响应速度为10KB,防止访问大文件占用带宽
        }
        #配置websocket\tcp代理,不能和http请求写到一起,否则post请求可能会失效
        location /chat/signalr {
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_pass http://test;
        }
        location /img/ {
            root /image;  #收到"/img/test.png"请求时,将请求映射为"/image/img/test.png"
            alias /image/;  #收到"/img/test.png"请求时,将请求映射为"/image/test.png"
            add_header Cache-Control max-age=36000000; #设置浏览器缓存
            index index.html  #设置首页文件
        }
        #显示目录结构
        location / {
            alias files/; 
            autoindex on;
        }
        #显示nginx访问状态信息和统计,编译时开启:–with-http_stub_status_module 
        location /nginx_status {
            stub_status;
        }
        location =/js{  #精准匹配:用户访问的 URI 与指定的 URI 完全一致的情况
            allow 192.168.78.129;  #允许此ip地址访问
        }
        location ~\.html$ {  #表示匹配网站根目录下以. html 结尾的文件
            allow all;  #允许所有用户访问
        }
        location ~^/aaa/.*\ .html$ {  #表示匹配网站根目录下 aaa 目录中以. html 结尾的文件 
            deny all;
        }
        error_page 502 504 500  /error.html; #当http响应码为502 504 500时跳转到error.html
        error_page 404=200 /404.html ; #将404响应码改为200,并跳转至404.html
        location=/50x.html{
        }
        #权重配置负载均衡
        upstream web_server {
            server 192.168.1.1 weight=1; # 权重为1
            server 192.168.1.2 weight=3; # 权重为3
        }
        #ip_hash配置负载均衡
        upstream web_server {
            ip_hash;
            server 192.168.1.1;
            server 192.168.1.2;
        }
        #还可以利用第三方模块实现,这里不多做讲解
    }
    allow 192.168.78.128;  #允许此ip地址访问
    deny all;  #禁止所有客户端访问
    error_log logs/error.log notice #错误日志存放,日志等级为notice
}

三、Nginx操作命令

1、使用配置文件启动Nginx : nginx -c /usr/local/nginx/conf/nginx.conf

2、重启服务: service nginx restart

3、 快速停止或关闭Nginx:nginx -s stop

4、 正常停止或关闭Nginx:nginx -s quit

5、 配置文件修改重装载命令:nginx -s reload

6、检查配置文件是否正确: nginx -t

7、 查看nginx信息(可用来查看nginx编译参数,重新编译nginx的时候需要使用):nginx -V

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值