- 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/;
}
- 请求:http://test.com/sta/sta1.html
- 实际访问:/usr/local/nginx/html/static/sta1.html 文件
location ^~ /tea/ {
root /usr/local/nginx/html/;
}
- 请求:http://test.com/tea/tea1.html
- 实际访问:/usr/local/nginx/html/tea/tea1.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
网友评论