美文网首页
Nginx核心配置分析

Nginx核心配置分析

作者: 有梦想的虫子_2018 | 来源:发表于2020-10-21 15:23 被阅读0次
    • 1、虚拟主机配置
    • 2、Nginx的日志配置
    • 3、location的语法和匹配规则
    • 4、alias与root的区别
    • 5、proxy_pass详解

    1、虚拟主机配置

    基于域名的虚拟主机

    server {
        listen 80;
        server_name www.suzao.com;
        location /{
                root html/domain;
                index index.html index.htm;
        }
    }
    

    基于端口的虚拟主机

    server {
       listen 8080;
       server_name localhost;
       location /port{
               root html/port;
               index index.html index.htm;
       }
    }
    

    2、Nginx的日志配置

    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
    #access_log  logs/access.log  main;
    

    #error_log logs/error.log notice;
    **logo声明 路径及文件名 日志标识**

    nginx日志切割

    //手动执行
    mv access.log access.log.20201013
    kill -USER1 Nginx 主进程号  //重新生成一个日志文件access.log
    

    crontab定时执行,切割日志脚本
    Linux Crontab 定时任务

    59 23 * * * /usr/local/nginx/sbin/cut_ngix_log.sh
    

    创建cut_ngix_log.sh脚本

    #!/bin/bash
    # 设置日志文件存在目录
    LOG_HOME="/usr/local/nginx/logs/"
    
    log_file_access=access.log;
    log_file_error=error.log;
    pid=/usr/local/nginx/logs/nginx.pid
    back_time=$(date +%Y%m%d%H%M%S)
    
    #备份文件名称
    mv ${LOG_HOME}/${log_file_access} ${LOG_HOME}/${back_time}.${log_file_access}
    mv ${LOG_HOME}/${log_file_error} ${LOG_HOME}/${back_time}.${log_file_error}
    
    #向nginx主进程发信号重新打开日志 
    kill -USR1 `cat $pid`
    

    3、location的语法和匹配规则

    location [=|~|~*|^~] /uri/ { … }

    • = 严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求
    • ~ 区分大小写匹配(可用正则表达式)
    • ~* 不区分大小写匹配(可用正则表达式)
    • !~ 区分大小写不匹配
    • !~* 不区分大小写不匹配
    • ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式

    示例1:

    location  / { }
    

    匹配任意请求

    示例2:

    location ~* .(gif|jpg|jpeg)$ {
        rewrite .(gif|jpg|jpeg)$ /logo.png;
    }
    

    不区分大小写匹配任何以gif、jpg、jpeg结尾的请求,并将该请求重定向到 /logo.png请求

    示例3:

    location ~ ^.+\.txt$ {
        root /usr/local/nginx/html/;
    }
    

    区分大小写匹配以.txt结尾的请求,并设置此location的路径是/usr/local/nginx/html/。也就是以.txt结尾的请求将访问/usr/local/nginx/html/路径下的txt文件

    4、alias与root的区别

    root 实际访问文件路径会拼接URL中的路径
    alias 实际访问文件路径不会拼接URL中的路径

    示例如下:

    location ^~ /sta/ {  
       alias /usr/local/nginx/html/static/;  
    }
    
    location ^~ /tea/ {  
       root /usr/local/nginx/html/;  
    }
    

    5、proxy_pass详解

    在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。

    假设下面四种情况分别用http://192.168.1.1/proxy/test.html进行访问。

    第一种:

    location /proxy/ {
    proxy_pass http://127.0.0.1/;
    }
    

    代理到URL:http://127.0.0.1/test.html

    第二种(相对于第一种,最后少一个 / )

    location /proxy/ {
    proxy_pass http://127.0.0.1;
    }
    

    代理到URL:http://127.0.0.1/proxy/test.html

    第三种:

    location /proxy/ {
    proxy_passhttp://127.0.0.1/aaa/;
    }
    

    代理到URL:http://127.0.0.1/aaa/test.html

    第四种(相对于第三种,最后少一个 / )

    location /proxy/ {
    proxy_pass http://127.0.0.1/aaa;
    }
    

    代理到URL:http://127.0.0.1/aaatest.html

    参考:
    https://www.cnblogs.com/duhuo/p/8323812.html
    https://blog.csdn.net/u010433704/article/details/99945557

    相关文章

      网友评论

          本文标题:Nginx核心配置分析

          本文链接:https://www.haomeiwen.com/subject/xkxemktx.html