今天配置awstats,awstats创建出的文件目录在/home/awstats下,在nginx中加入配置后狂报404,发现还是忽略了root和alias的区别,特将修改配置记录如下:
1.失败:
server {
server_name test.com;
charset utf-8,GB2312;
index index.html;
location / {
root html;
access_log logs/access.log main;
}
location ~ ^/awstats/ {
root /home/awstats/;
index index.html;
access_log off;
error_log off;
charset gb2312;
}
}
2.失败:
server {
server_name test.com;
charset utf-8,GB2312;
index index.html;
location / {
root html;
access_log logs/access.log main;
}
location ~ ^/awstats/ {
alias /home/;
index index.html;
access_log off;
error_log off;
charset gb2312;
}
}
3. 成功
server {
server_name test.com;
charset utf-8,GB2312;
index index.html;
location / {
root html;
access_log logs/access.log main;
}
location ~ ^/awstats/ {
alias /home/awstats/;
index index.html;
access_log off;
error_log off;
charset gb2312;
}
}
4.成功:
server {
server_name test.com;
charset utf-8,GB2312;
index index.html;
location / {
root html;
access_log logs/access.log main;
}
location ~ ^/awstats/ {
root /home/;
index index.html;
access_log off;
error_log off;
charset gb2312;
}
}
从以上例子很明显看出,还是对root和alias的概念搞混了~
1. location ~ ^/awstats/ {
root /home/awstats/;
访问: http://test.com/awstats/ 实际访问的是/home/awstats/awstats/
root /home/awstats/;
访问: http://test.com/awstats/ 实际访问的是/home/awstats/awstats/
2. location ~ ^/awstats/ {
alias /home/
alias /home/
访问:
http://test.com/awstats/ 实际访问的是/home/
3. location ~ ^/awstats/ { #使用alias时目录名后面一定要加“/”
alias /home/awstats/;
alias /home/awstats/;
访问:
http://test.com/awstats/ 实际访问的是/home/awstats/
4. location ~ ^/awstats/ {
root /home/;
访问:
http://test.com/awstats/ 实际访问的是/home/awstats/
root /home/;
借用ayou老师的一句话:
一般情况下,在location /中配置root,在location /other中配置alias是一个好习惯
来源:oschina
链接:https://my.oschina.net/u/103999/blog/115510