Kiến thức Hữu ích 😍

Hướng Dẫn Chuyển Hướng www Sang Non-www Nhanh Chóng Với Nginx Trên CentOS 7


Việc thống nhất một phiên bản URL duy nhất cho website là một trong những yếu tố nền tảng của SEO kỹ thuật. Chuyển hướng www sang non-www (hoặc ngược lại) không chỉ là một thao tác kỹ thuật đơn thuần mà còn là một chiến lược quan trọng để củng cố sức mạnh cho tên miền của bạn. Khi không có sự nhất quán, các công cụ tìm kiếm như Google có thể coi www.domain.comdomain.com là hai trang web riêng biệt, dẫn đến tình trạng “trùng lặp nội dung” nghiêm trọng. Điều này làm phân tán giá trị backlink, giảm uy tín trang và ảnh hưởng tiêu cực đến thứ hạng tìm kiếm. Để giải quyết vấn đề này, việc cấu hình chuyển hướng 301 vĩnh viễn là giải pháp tối ưu. Trong bài viết này, AZWEB sẽ hướng dẫn bạn chi tiết cách sử dụng Nginx trên hệ điều hành CentOS 7 để thiết lập chuyển hướng từ www sang non-www một cách hiệu quả, giúp website của bạn trở nên chuyên nghiệp và thân thiện hơn với SEO.

Hình minh họa

Tổng quan về Nginx và CentOS 7

Nginx là gì và vai trò trong máy chủ web

Nginx (phát âm là “engine-x”) là một phần mềm máy chủ web mã nguồn mở hiệu suất cao. Ban đầu, Nginx được tạo ra để giải quyết bài toán C10k – xử lý 10.000 kết nối đồng thời trên một máy chủ. Nhờ kiến trúc hướng sự kiện (event-driven) và không đồng bộ, Nginx có khả năng xử lý hàng ngàn yêu cầu cùng lúc mà chỉ tiêu tốn rất ít tài nguyên hệ thống, đặc biệt là bộ nhớ RAM.

Vai trò chính của Nginx không chỉ dừng lại ở việc phục vụ các nội dung tĩnh (HTML, CSS, hình ảnh). Nó còn được sử dụng rộng rãi như một máy chủ proxy ngược (reverse proxy), cân bằng tải (load balancer), và cache HTTP. Trong vai trò máy chủ web, Nginx nổi bật với khả năng quản lý chuyển hướng mạnh mẽ và linh hoạt. Việc cấu hình các quy tắc redirect, bao gồm cả chuyển hướng www sang non-www, được thực hiện một cách đơn giản thông qua các file cấu hình, giúp quản trị viên dễ dàng tối ưu hóa URL cho SEO và cải thiện trải nghiệm người dùng mà không làm ảnh hưởng đến hiệu suất tổng thể của máy chủ. Tìm hiểu kỹ hơn về Nginx là gì để tận dụng tối đa các tính năng của server này.

Tại sao chọn CentOS 7 làm hệ điều hành cho máy chủ

CentOS (Community ENTerprise Operating System) là một bản phân phối Linux miễn phí, được xây dựng dựa trên mã nguồn của Red Hat Enterprise Linux (RHEL). CentOS 7, một trong những phiên bản phổ biến nhất, được cộng đồng doanh nghiệp và quản trị viên hệ thống tin dùng nhờ vào các đặc điểm vượt trội dành cho môi trường máy chủ.

Lý do chính để chọn CentOS 7 là tính ổn định và độ tin cậy cao. Nó được thiết kế để hoạt động bền bỉ trong thời gian dài mà không cần khởi động lại thường xuyên, một yếu tố quan trọng đối với các website cần uptime 99.99%. Hơn nữa, CentOS 7 cung cấp chu kỳ hỗ trợ dài hạn (Long-Term Support), đảm bảo rằng hệ thống của bạn sẽ nhận được các bản vá bảo mật và cập nhật quan trọng trong nhiều năm. Điều này giúp giảm thiểu rủi ro từ các lỗ hổng bảo mật và tiết kiệm chi phí vận hành. Với sự ổn định, bảo mật và sự hỗ trợ mạnh mẽ từ cộng đồng, CentOS 7 tạo ra một nền tảng vững chắc để triển khai các dịch vụ web hiệu suất cao như Nginx.

Chuẩn bị môi trường và công cụ cần thiết

Cài đặt Nginx trên CentOS 7

Trước khi cấu hình chuyển hướng, bạn cần chắc chắn rằng Nginx đã được cài đặt trên máy chủ CentOS 7 của mình. Quá trình này khá đơn giản và có thể thực hiện nhanh chóng thông qua trình quản lý gói YUM (Yellowdog Updater, Modified).

Đầu tiên, hãy cập nhật hệ thống của bạn để đảm bảo các gói phần mềm là mới nhất:

sudo yum update -y

Tiếp theo, bạn cần cài đặt kho lưu trữ EPEL (Extra Packages for Enterprise Linux) để có thể cài đặt Nginx.

sudo yum install epel-release -y

Hình minh họa

Bây giờ, bạn đã có thể cài đặt Nginx bằng lệnh sau:

sudo yum install nginx -y

Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ Nginx và cho phép nó tự động chạy mỗi khi hệ thống khởi động:

sudo systemctl start nginx
sudo systemctl enable nginx

Để kiểm tra xem Nginx đã hoạt động đúng chưa, bạn có thể chạy lệnh:

sudo systemctl status nginx

Nếu bạn thấy dòng chữ active (running) màu xanh lá, điều đó có nghĩa là Nginx đã được cài đặt và đang chạy thành công trên máy chủ của bạn. Tham khảo chi tiết hơn về Nginx là gì để hiểu rõ cách làm việc của server web này.

Kiểm tra quyền truy cập và chuẩn bị file cấu hình

Sau khi cài đặt Nginx, bước tiếp theo là làm quen với cấu trúc thư mục và các file cấu hình của nó. Hiểu rõ vị trí của các file này sẽ giúp bạn quản lý và tùy chỉnh máy chủ web một cách dễ dàng hơn.

Trên CentOS 7, file cấu hình chính của Nginx nằm tại /etc/nginx/nginx.conf. File này chứa các thiết lập toàn cục cho Nginx. Tuy nhiên, một phương pháp quản lý tốt hơn là không chỉnh sửa trực tiếp file này. Thay vào đó, bạn nên tạo các file cấu hình riêng cho từng website (còn gọi là server block hoặc virtual host) trong thư mục /etc/nginx/conf.d/. Mặc định, Nginx sẽ tự động nạp tất cả các file có đuôi .conf trong thư mục này.

Để chỉnh sửa các file cấu hình, bạn cần có quyền quản trị (root hoặc sudo) và sử dụng một trình soạn thảo văn bản trên dòng lệnh. Hai công cụ phổ biến nhất là vimnano.

  • Nano: Thân thiện với người mới bắt đầu, hiển thị các phím tắt cơ bản ở cuối màn hình.
  • Vim: Mạnh mẽ và hiệu quả hơn cho người dùng có kinh nghiệm, nhưng cần thời gian để làm quen.

Ví dụ, để tạo và chỉnh sửa một file cấu hình mới cho website của bạn bằng nano, bạn có thể dùng lệnh:

sudo nano /etc/nginx/conf.d/your_domain.conf

Hãy đảm bảo bạn có đủ quyền để đọc, ghi và thực thi trên các thư mục và file cấu hình này để tránh các lỗi không mong muốn khi Nginx khởi động lại. Tham khảo thêm về Nginx là gì để hiểu rõ cách cấu hình chi tiết.

Hình minh họa

Cách cấu hình chuyển hướng www sang non-www trên Nginx

Mở file cấu hình và thêm đoạn redirect

Đây là bước quan trọng nhất để thiết lập chuyển hướng. Chúng ta sẽ tạo một khối server (server block) riêng để bắt tất cả các yêu cầu đến phiên bản có www và chuyển hướng chúng sang phiên bản non-www bằng mã trạng thái 301 (Moved Permanently).

Đầu tiên, hãy tạo một file cấu hình mới cho tên miền của bạn trong thư mục /etc/nginx/conf.d/. Ví dụ, nếu tên miền của bạn là azweb.vn, bạn có thể tạo file azweb.vn.conf.

sudo nano /etc/nginx/conf.d/azweb.vn.conf

Bên trong file này, bạn sẽ cấu hình hai khối server.

  1. Khối server để chuyển hướng từ www: Khối này sẽ lắng nghe các yêu cầu gửi đến www.azweb.vn và trả về một lệnh chuyển hướng 301 đến azweb.vn.
  2. Khối server chính cho non-www: Khối này sẽ xử lý tất cả các yêu cầu cho phiên bản non-www và là nơi chứa cấu hình chính cho website của bạn.

Dưới đây là ví dụ minh họa cụ thể:

# Khối server này bắt các yêu cầu đến www.azweb.vn
server {
    listen 80;
    server_name www.azweb.vn;

    # Chuyển hướng vĩnh viễn (301) sang phiên bản non-www
    return 301 $scheme://azweb.vn$request_uri;
}

# Khối server chính xử lý phiên bản non-www
server {
    listen 80;
    server_name azweb.vn;

    # Các cấu hình khác cho website của bạn
    # root /var/www/azweb.vn;
    # index index.html index.htm;
    
    # ...
}

Giải thích cú pháp:

  • listen 80;: Lắng nghe các kết nối trên cổng 80 (HTTP).
  • server_name www.azweb.vn;: Chỉ định khối này chỉ áp dụng cho tên miền có www.
  • return 301 $scheme://azweb.vn$request_uri;: Đây là dòng lệnh thực hiện chuyển hướng.
    • return 301: Trả về mã trạng thái 301, thông báo cho trình duyệt và công cụ tìm kiếm rằng trang đã được chuyển hướng vĩnh viễn.
    • $scheme: Biến này sẽ tự động lấy giao thức đang sử dụng (http hoặc https).
    • azweb.vn: Tên miền non-www mà bạn muốn chuyển đến.
    • $request_uri: Biến này chứa đường dẫn và các tham số của URL gốc, đảm bảo người dùng được chuyển đến đúng trang họ yêu cầu (ví dụ: www.azweb.vn/san-pham sẽ được chuyển đến azweb.vn/san-pham).

Sau khi thêm cấu hình, hãy lưu file và thoát khỏi trình soạn thảo.

Hình minh họa

Reload lại Nginx và kiểm tra cấu hình hợp lệ

Sau khi chỉnh sửa file cấu hình, bạn không nên khởi động lại Nginx ngay lập tức. Một lỗi cú pháp nhỏ trong file cấu hình cũng có thể khiến Nginx không thể khởi động, dẫn đến website của bạn bị downtime. Do đó, bước kiểm tra cấu hình là cực kỳ quan trọng.

Nginx cung cấp một công cụ tích hợp để kiểm tra cú pháp của tất cả các file cấu hình. Hãy chạy lệnh sau:

sudo nginx -t

Nếu cấu hình của bạn hợp lệ, bạn sẽ nhận được một thông báo tương tự như sau:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nếu có lỗi, Nginx sẽ chỉ ra chính xác vị trí và loại lỗi trong file cấu hình để bạn có thể sửa chữa. Ví dụ, nếu bạn quên dấu chấm phẩy ; ở cuối một dòng, Nginx sẽ báo lỗi cú pháp.

Sau khi đã chắc chắn rằng cấu hình không có lỗi, bạn có thể áp dụng các thay đổi bằng cách tải lại (reload) Nginx. Lệnh reload sẽ áp dụng cấu hình mới một cách mượt mà mà không làm gián đoạn các kết nối hiện tại, khác với lệnh restart sẽ dừng và khởi động lại toàn bộ dịch vụ.

sudo systemctl reload nginx

Bây giờ, các quy tắc chuyển hướng của bạn đã được áp dụng. Bước tiếp theo là kiểm tra xem chúng có hoạt động như mong đợi không. Để hiểu sâu hơn về Nginx cũng như cấu hình server, bạn có thể tham khảo bài viết Nginx là gì.

Kiểm tra và xác nhận chuyển hướng hoạt động đúng

Sau khi đã áp dụng cấu hình mới, việc kiểm tra kỹ lưỡng là bước cuối cùng để đảm bảo mọi thứ hoạt động chính xác. Bạn có thể sử dụng một vài phương pháp đơn giản nhưng hiệu quả để xác nhận chuyển hướng.

Phương pháp đầu tiên và dễ nhất là sử dụng trình duyệt web. Mở một cửa sổ ẩn danh (Incognito Mode/Private Window) để tránh ảnh hưởng từ bộ nhớ cache của trình duyệt. Gõ vào thanh địa chỉ phiên bản URL có www (ví dụ: http://www.azweb.vn) và nhấn Enter. Nếu cấu hình đúng, bạn sẽ thấy thanh địa chỉ tự động thay đổi thành phiên bản non-www (http://azweb.vn).

Hình minh họa

Để kiểm tra một cách kỹ thuật hơn và chắc chắn rằng đây là chuyển hướng 301, bạn có thể sử dụng công cụ dòng lệnh curl. curl là một công cụ mạnh mẽ để gửi các yêu cầu HTTP. Mở terminal và chạy lệnh sau (thay www.azweb.vn bằng tên miền của bạn):

curl -I http://www.azweb.vn

Tùy chọn -I yêu cầu curl chỉ lấy phần header của phản hồi HTTP. Kết quả bạn nhận được sẽ trông giống như thế này:

HTTP/1.1 301 Moved Permanently
Server: nginx/1.16.1
Date: Tue, 28 May 2024 10:00:00 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive
Location: http://azweb.vn/

Điểm quan trọng cần chú ý là dòng HTTP/1.1 301 Moved Permanently và dòng Location: http://azweb.vn/. Điều này xác nhận rằng máy chủ của bạn đã phản hồi bằng mã trạng thái 301 và chỉ định vị trí mới là phiên bản non-www. Khi thấy kết quả này, bạn có thể yên tâm rằng việc chuyển hướng đã được thiết lập thành công.

Tác động của chuyển hướng đến SEO và trải nghiệm người dùng

Việc cấu hình chuyển hướng 301 từ www sang non-www không chỉ là một tinh chỉnh kỹ thuật. Nó mang lại những lợi ích đáng kể cho cả chiến lược SEO và trải nghiệm của người dùng trên website của bạn.

Đối với SEO, tác động lớn nhất là việc tránh trùng lặp nội dung. Các công cụ tìm kiếm như Google coi http://www.azweb.vnhttp://azweb.vn là hai URL khác nhau, dù chúng cùng hiển thị một nội dung. Nếu cả hai phiên bản đều có thể truy cập, Google sẽ bối rối không biết nên lập chỉ mục và xếp hạng phiên bản nào, dẫn đến việc sức mạnh SEO của bạn bị chia đôi. Bằng cách sử dụng chuyển hướng 301, bạn ra tín hiệu rõ ràng cho công cụ tìm kiếm rằng phiên bản non-www là URL “chính tắc” (canonical URL). Điều này giúp hợp nhất toàn bộ giá trị backlink và uy tín trang (link equity) vào một URL duy nhất, từ đó cải thiện thứ hạng tìm kiếm một cách bền vững.

Hình minh họa

Về phía người dùng, sự nhất quán trong URL mang lại một trải nghiệm mượt mà và chuyên nghiệp hơn. Một URL duy nhất, ngắn gọn (non-www thường được ưa chuộng hơn) sẽ dễ nhớ, dễ gõ và dễ chia sẻ hơn. Khi người dùng truy cập vào bất kỳ phiên bản nào của trang web, họ đều được tự động đưa đến địa chỉ chính xác. Điều này loại bỏ sự nhầm lẫn và tạo dựng niềm tin vào thương hiệu của bạn. Một URL chuẩn SEO, nhất quán cũng góp phần xây dựng một hình ảnh thương hiệu mạnh mẽ và đáng tin cậy trên không gian mạng.

Khắc phục sự cố thường gặp khi cấu hình chuyển hướng

Lỗi vòng lặp chuyển hướng (redirect loop)

Lỗi vòng lặp chuyển hướng (ERR_TOO_MANY_REDIRECTS) là một trong những sự cố phổ biến nhất khi cấu hình sai. Lỗi này xảy ra khi một URL liên tục chuyển hướng đến một URL khác, và URL đó lại chuyển hướng ngược lại, tạo thành một vòng lặp vô tận. Trình duyệt sẽ dừng quá trình này và hiển thị thông báo lỗi.

Nguyên nhân chính thường là do cấu hình mâu thuẫn. Ví dụ, bạn có thể đã cấu hình Nginx để chuyển hướng www sang non-www, nhưng đồng thời, trong mã nguồn ứng dụng web (ví dụ: WordPress, Magento) hoặc trong một file .htaccess khác, lại có một quy tắc chuyển hướng non-www sang www.

Cách khắc phục:

  1. Kiểm tra toàn bộ cấu hình: Rà soát lại tất cả các file cấu hình của Nginx (/etc/nginx/conf.d/) để đảm bảo chỉ có một quy tắc chuyển hướng duy nhất cho tên miền của bạn. Hãy chắc chắn rằng khối server cho www chuyển đến non-www và khối server cho non-www không có bất kỳ lệnh return hay rewrite nào chuyển hướng ngược lại.
  2. Kiểm tra cấu hình ứng dụng: Đăng nhập vào khu vực quản trị của CMS (ví dụ: trong WordPress, vào Cài đặt > Tổng quan) và đảm bảo rằng “Địa chỉ WordPress (URL)” và “Địa chỉ trang web (URL)” đều được đặt thành phiên bản non-www (https://azweb.vn).
  3. Kiểm tra các file .htaccess: Nếu bạn đang sử dụng Nginx làm proxy ngược cho Apache, hãy kiểm tra các file .htaccess trong thư mục gốc của website để tìm các quy tắc RewriteRule có thể gây xung đột.
  4. Xóa bộ nhớ cache: Sau khi sửa lỗi, hãy xóa bộ nhớ cache của trình duyệt và cache trên máy chủ (nếu có) trước khi kiểm tra lại.

Hình minh họa

Nginx không áp dụng cấu hình mới hoặc lỗi 500

Đôi khi, sau khi chỉnh sửa và tải lại Nginx, bạn thấy rằng các thay đổi không có hiệu lực hoặc tệ hơn là website hiển thị lỗi 500 Internal Server Error. Dưới đây là các nguyên nhân và cách giải quyết phổ biến.

Nguyên nhân Nginx không áp dụng cấu hình mới:

  1. Quên tải lại Nginx: Đây là lỗi đơn giản nhất. Sau khi lưu file cấu hình, bạn phải chạy lệnh sudo systemctl reload nginx để Nginx đọc và áp dụng các thay đổi.
  2. Chỉnh sửa sai file: Đảm bảo rằng bạn đang chỉnh sửa đúng file cấu hình cho website của mình. Kiểm tra lại đường dẫn file trong /etc/nginx/conf.d/.
  3. Lỗi bộ nhớ cache: Trình duyệt hoặc một lớp cache trung gian (như Cloudflare) có thể đang lưu phiên bản cũ của trang. Hãy xóa cache trình duyệt hoặc tạm dừng dịch vụ proxy để kiểm tra.

Nguyên nhân gây ra lỗi 500:

  1. Lỗi cú pháp trong cấu hình: Đây là nguyên nhân hàng đầu. Mặc dù bạn đã chạy nginx -t, đôi khi một lỗi logic vẫn có thể xảy ra. Ví dụ, một biến không hợp lệ hoặc một chỉ thị sai ngữ cảnh.
  2. Vấn đề về quyền truy cập: Nginx (chạy dưới user nginx hoặc www-data) có thể không có quyền đọc file cấu hình hoặc truy cập vào các thư mục được chỉ định trong cấu hình (ví dụ: root directive). Hãy kiểm tra quyền của các file và thư mục liên quan.
  3. Lỗi từ ứng dụng backend: Nếu Nginx đang hoạt động như một proxy ngược, lỗi 500 có thể đến từ ứng dụng backend (PHP-FPM, Node.js,…) chứ không phải từ Nginx.

Cách khắc phục:

  • Luôn chạy sudo nginx -t trước khi reload.
  • Kiểm tra logs lỗi của Nginx: Đây là bước quan trọng nhất để chẩn đoán vấn đề. File log lỗi thường nằm ở /var/log/nginx/error.log. Mở file này để xem thông báo lỗi chi tiết, nó sẽ cho bạn biết chính xác điều gì đang xảy ra.
sudo tail -f /var/log/nginx/error.log

Lệnh trên sẽ hiển thị các dòng log mới nhất trong thời gian thực, giúp bạn dễ dàng theo dõi lỗi khi tải lại trang. Tham khảo thêm cách quản trị server và Ram ecc là gì để tăng độ ổn định cho máy chủ của bạn.

Best Practices

Để đảm bảo việc cấu hình chuyển hướng trên Nginx không chỉ hiệu quả mà còn an toàn và dễ bảo trì, bạn nên tuân thủ một số nguyên tắc thực hành tốt nhất (best practices) sau đây.

  1. Luôn sao lưu file cấu hình trước khi sửa đổi: Đây là quy tắc vàng trong quản trị hệ thống. Trước khi mở một file cấu hình để chỉnh sửa, hãy tạo một bản sao lưu. Một lệnh đơn giản như sudo cp /etc/nginx/conf.d/azweb.vn.conf /etc/nginx/conf.d/azweb.vn.conf.bak có thể cứu bạn khỏi nhiều giờ khắc phục sự cố nếu có sai sót xảy ra.
  2. Sử dụng chuyển hướng 301 cho mục đích SEO: Khi bạn muốn hợp nhất giá trị SEO, hãy luôn sử dụng mã trạng thái 301 Moved Permanently. Mã này thông báo cho các công cụ tìm kiếm rằng URL đã được chuyển vĩnh viễn và chúng nên chuyển toàn bộ “uy tín” (link equity) sang URL mới. Tránh sử dụng chuyển hướng 302 (Found/Tạm thời) trừ khi bạn thực sự chỉ muốn chuyển hướng tạm thời.
  3. Kiểm tra kỹ mỗi thay đổi: Đừng bao giờ áp dụng thay đổi trên môi trường sản xuất (production) mà chưa kiểm tra kỹ. Sử dụng lệnh nginx -t để xác thực cú pháp. Sau khi reload, hãy dùng curl và trình duyệt ẩn danh để xác nhận chuyển hướng hoạt động đúng như mong đợi.
  4. Tránh tạo chuỗi chuyển hướng phức tạp (redirect chains): Một chuỗi chuyển hướng xảy ra khi URL A chuyển đến B, rồi B lại chuyển đến C. Mỗi lần chuyển hướng sẽ làm tăng thêm độ trễ, làm chậm tốc độ tải trang và lãng phí “ngân sách thu thập dữ liệu” (crawl budget) của Google. Hãy đảm bảo rằng quy tắc của bạn chuyển hướng trực tiếp từ URL cũ đến URL cuối cùng.
  5. Giữ cấu trúc file cấu hình gọn gàng: Thay vì viết tất cả mọi thứ vào file nginx.conf chính, hãy sử dụng thư mục conf.d để tạo các file riêng biệt cho mỗi tên miền hoặc mỗi chức năng. Điều này giúp việc quản lý, gỡ lỗi và bảo trì trở nên dễ dàng hơn rất nhiều khi hệ thống của bạn phát triển.

Hình minh họa

Kết luận

Việc cấu hình chuyển hướng www sang non-www trên Nginx và CentOS 7 là một bước đi thiết yếu để xây dựng một nền tảng website vững chắc, chuyên nghiệp và thân thiện với SEO. Thông qua việc hợp nhất URL, bạn không chỉ giải quyết được vấn đề trùng lặp nội dung, củng cố sức mạnh tên miền mà còn cải thiện đáng kể trải nghiệm người dùng. Quá trình này, dù có vẻ kỹ thuật, nhưng hoàn toàn có thể thực hiện một cách an toàn và hiệu quả nếu bạn tuân thủ các bước hướng dẫn chi tiết và các nguyên tắc thực hành tốt nhất.

AZWEB hy vọng rằng bài viết này đã cung cấp cho bạn kiến thức và sự tự tin để tự mình triển khai chuyển hướng trên máy chủ của mình. Hãy nhớ rằng, quản trị máy chủ là một quá trình liên tục. Luôn kiểm tra, sao lưu và cập nhật cấu hình của bạn một cách định kỳ để đảm bảo website luôn hoạt động ở hiệu suất cao nhất và tuân thủ các tiêu chuẩn SEO mới nhất. Việc đầu tư thời gian vào những tối ưu hóa kỹ thuật như thế này chính là khoản đầu tư thông minh cho sự phát triển bền vững của website trong dài hạn.

Hình minh họa

Đánh giá