Nginx核心配置分析

2020-10-21  本文已影响0人  有梦想的虫子_2018

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/ { … }

示例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

上一篇下一篇

猜你喜欢

热点阅读