今天配置nginx的时候需要将两个静态文件放到一个域名下,配置了好久,最后发现是就是root和alias 的区别。
成功案例:
访问www.test.com/ 会进入 /home/icbc/html
访问www.test.com/game/luck 会进入 /home/icbc/gameluck/html
server{
listen 80;
#对应域名
server_name www.test.com;
ssl_certificate 7766945_asian.cardwinner.com.pem;
ssl_certificate_key 7766945_asian.cardwinner.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /home/icbc/html;
index index.html;
}
location /game/luck {
alias /home/icbc/gameluck/html;
index index.html;
}
location ^~/api{
proxy_pass http://127.0.0.1:8088/;
}
location ^~/ws/{
proxy_pass https://apis.map.qq.com/ws/;
}
location ^~/icbc{
proxy_pass http://127.0.0.1:8099/;
}
}
Nginx中alias与root的区别:
Nginx指定文件路径有两种方式root和alias,这两者的用法区别在于对URI的处理方法不同。
举例:
alias :
location /abc/{
alias /usr/local/nginx/html/admin/;
}
若按照上述配置的话,则访问/abc/目录里面的文件时,ningx会自动去/usr/local/nginx/html/admin目录找文件。
root:
location /abc/ {
root /usr/local/nginx/html/admin;
}
若按照这种配置的话,则访问/abc/目录下的文件时,nginx会去/usr/local/nginx/html/admin/abc下找文件。
(1)、alias是一个目录别名的定义,root则是最上层目录的定义。
(2)、还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。而root则可有可无。