Nginx: root và alias

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.htmlthà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;
}

Comments Off on Nginx: root và alias

Filed under Software

Comments are closed.