欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx常用配置说明

程序员文章站 2024-02-20 19:58:40
...

nginx的主配置(nginx.conf)说明

#worker进程数量
worker_processes  1;
#错误日志
error_log logs/error.log;
#进程ID文件
pid logs/nginx.pid;

#事件区块开始
events {
    #worker进程支持的最大连接数
    worker_connections  1024;
}

#http区块开始
http {
    #nginx支持的媒体类型库文件
    include       mime.types;
    #默认的媒体文件
    default_type  application/octet-stream;
    #开启高效传输模式
    sendfile        on;
    #连接超时
    keepalive_timeout  65;

    #一个server区块开始
    server {
        #端口号
        listen       80;
        #服务主机名
        server_name  localhost;
        #编码
        charset utf-8;
        #location区块
        location / {
            #站点根目录
            root   html;
            #默认首页文件
            index  index.html index.htm;
        }
        #出现对应状态码时,访问50x.html
        error_page   500 502 503 504  /50x.html;
        #访问50x.html时指定目录为html
        location = /50x.html {
            root   html;
        }
    }
}

nginx的状态信息功能

location / {
    #打开状态信息开关
    stub_status on;
    access_log off;
    allow 127.0.0.1/24;
    deny all;
}

nginx错误日志配置

关键字 日志文件 错误日志级别[debug|info|notice|warn|error|crit|alert|emerg]

error_log  logs/error.log  notice;

nginx访问日志配置

#定义日志格式

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 客户端地址 211.28.65.253
$remote_user 客户端用户名称 --
$time_local 访问时间和时区 18/Jul/2012:17:00:01 +0800
$request 请求的URI和HTTP协议 "GET /article-10000.html HTTP/1.1"
$http_host 请求地址,即浏览器中你输入的地址(IP或域名) www.it300.com
192.168.100.100
$status HTTP请求状态 200
$upstream_status upstream状态 200
$body_bytes_sent 发送给客户端文件内容大小 1547
$http_referer url跳转来源 https://www.baidu.com/
$http_user_agent 用户终端浏览器等信息 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;
$ssl_protocol SSL协议版本 TLSv1
$ssl_cipher 交换数据中的算法 RC4-SHA
$upstream_addr 后台upstream的地址,即真正提供服务的主机地址 10.10.10.100:80
$request_time 整个请求的总时间 0.205
$upstream_response_time 请求过程中,upstream响应时间 0.002

#访问日志配置

access_log logs/access.log main;

#在高并发的网站下,日志配置可以如下

access_log logs/access.log main gzip buffer=32k flush=5s;


nginx的location作用
location的作用是根据用户请求的URI来执行不同的应用。

location [= | ~ | ~* | ^~] URI {
    ... ...
}
~用于区分大小写
~*用于不区分大小写
^~进行常规字符串匹配检查后,不做正则表达式的检查

例如:

location = / {
    #精确匹配/
}
location / {
    #所有location不能匹配后的默认匹配
}
location /www/ {
    #匹配常规字符串,有正则,优先匹配正则
}
location ^~ /imgs/ {
    #匹配常规字符串,不做正则匹配检查
}
location ~* \.(gif|jpg|jpeg)$ {
    #正则匹配
}

nginx的rewrite配置

rewrite指令语法

rewrite regex replacement [flag];

例如:

rewrite ^/(.*) http://www.baidu.com/$1 permanent;

其中$1表示前面小括号匹配的部分。

flag参数说明:
last 本条规则匹配完成后,继续向下匹配新的规则
break 本条规则匹配完即终止
redirect 返回302临时重定向
permanent 返回301永久重定向

上述,last和break用来实现URL重写,redirect和permanet用来实现URL跳转

例如:

server {
    listen 80;
    server_name book.site.com;
    location / {
        root html/book;
        index index.html index.htm;
    }
    if($http_host ~* "^(.*)\.site\.com$") {
        set $domain $1;
        rewrite ^(.*) http://www.site.com/$domain/test.html break;
    }
}

当我们访问book.site.com时URL重写为www.site.com/book/test.html