Sử dụng chỉ dẫn root ở đâu?
Thông thường chỉ dẫn root đặt trong khối server
và location
. Đặt chỉ dẫn root trong khối server làm cho chỉ dẫn root có hiệu lực trên tất cả các khối location trong cùng một khối server.
Thí dụ
server {
server_name example.com;
listen 80;
index index.html;
root /var/www/example.com;
location / {
try_files $uri $uri/ =404;
}
location ^~ /images {
root /var/www/static;
try_files $uri $uri/ =404;
}
}
Trong cấu hình trên, Nginx sẽ tìm bên trong thư mục /var/www/static
của server với các yêu cầu HTTP như http://example.com/images/logo.png
hoặc http://example.com/images/funny-monkey.jpg
.
Nginx cũng sẽ tìm trong thư mục /var/www/example.com
với các yêu cầu HTTP như http://example.com/contact.html
hay http://example.com/about/us.html
.
Chỉ dẫn root nói gì với Nginx?
Chỉ dẫn root
bảo Nginx lấy yêu cầu url và nối vào sau giá trị của chỉ dẫn root.
Thí dụ
server {
server_name example.com;
listen 80;
index index.html;
root /var/www/example.com;
location / {
try_files $uri $uri/ =404;
}
location ^~ /images {
root /var/www/static;
try_files $uri $uri/ =404;
}
}
Nginx sẽ thay đổi url như sau:
http://example.com/images/logo.png
thành/var/www/static/images/logo.png
.http://example.com/contact.html
thành/var/www/example.com/contact.html
http://example.com/about/us.html
thành/var/www/example.com/about/us.html
Sử dụng chỉ dẫn alias ở đâu?
Chỉ dẫn alias
chỉ có thể đặt trong khối location
.
Đặt chỉ dẫn alias
trong một khốilocation
sẽ thay thế chỉ dẫn root
hoặc alias
ở cấp cao hơn.
server {
server_name example.com;
listen 80;
index index.html;
root /var/www/example.com;
location / {
try_files $uri $uri/ =404;
}
location ^~ /images {
alias /var/www/static;
try_files $uri $uri/ =404;
}
}
Theo cấu hình trên, Nginx sẽ tìm trong thư mục /var/www/static
cho các yêu cầu HTTP như http://example.com/images/logo.png
hay http://example.com/images/funny-monkey.jpg
.
Nginx sẽ tìm trong thư mục /var/www/example.com
cho các yêu cầu HTTP http://example.com/contact.html
hay http://example.com/about/us.html
.
Lưu ý là khối “location /” mô tả root khi không có chỉ dẫn root
hoặc alias
nằm trong khối.
“location ^~ /images” mô tả chỉ dẫn alias
thay cho chỉ dẫn root..
Chỉ dẫn alias nói gì với Nginx?
Chỉ dẫn alias
bảo Nginx thay thế giá trị được định nghĩa trong khối location với đường dẫn được mô tả trong chỉ dẫn alias
.
server {
server_name example.com;
listen 80;
index index.html;
root /var/www/example.com;
location / {
try_files $uri $uri/ =404;
}
location ^~ /images {
alias /var/www/static;
try_files $uri $uri/ =404;
}
}
http://example.com/images/logo.png
thành/var/www/static/logo.png
.http://example.com/images/third-party/facebook-logo.png
thành/var/www/static/third-party/facebook-logo.png
.http://example.com/contact.html
thành/var/www/example.com/contact.html
http://example.com/about/us.html
thành/var/www/example.com/about/us.html
Dùng chỉ dẫn root thay cho chỉ dẫn alias
Nginx documentation on the alias directive gợi ý dùng root
trên alias
khi location khớp với phần cuối của giá trị của chỉ dẫn.
Thí dụ, định nghĩa chỉ dẫn alias
cho khối location như sau:
location /images/ {
alias /data/w3/images/;
}
Hãy xem xét dùng chỉ dẫn root
cho khối location như sau:
location /images/ {
root /data/w3;
}
Dùng chỉ dẫn alias thay cho chỉ dẫn root
Ta dùng chỉ dẫn alias
khi yêu cầu nhiều urls được phục vụ bởi các file nằm trong cùng thư mục.
Thí dụ, muốn các yêu cầu /images/*
và /css/*
được phục vụ bới các file nằm trong thư mục /var/www/static
, chúng ta có thể cấu hình:
location ^~ /images {
alias /var/www/static;
try_files $uri $uri/ =404;
}
location ^~ /css {
alias /var/www/static;
try_files $uri $uri/ =404;
}