Cách cài đặt Nginx trên Ubuntu 20.04 LTS

Hướng dẫn từng bước đầy đủ để cài đặt và thiết lập máy chủ web Nginx trên hệ thống Ubuntu 20.04

Nginx là một máy chủ web proxy ngược mã nguồn mở và phổ biến có sẵn trên nhiều nền tảng. Phần mềm được phát triển bởi Igor Sysoev như một giải pháp cho vấn đề C10K và được phát hành lần đầu tiên vào năm 2004. Vấn đề C10K là vấn đề xử lý đồng thời mười nghìn máy khách, một điều khá không dễ dàng vào đầu những năm 2000.

Trong hướng dẫn này, chúng tôi xem xét cách cài đặt và thiết lập Nginx trên Ubuntu 20.04 LTS.

Điều kiện tiên quyết

Hệ thống đã cài đặt Ubuntu 20.04 và sudo người dùng. Ngoài ra, bạn cần không có máy chủ web nào khác như Apache đang chạy trên cổng 80 hoặc 443.

Cài đặt Nginx

Nginx có sẵn trong kho lưu trữ Ubuntu 20.04 và đúng cách trình quản lý gói có thể được sử dụng để cài đặt nó. Vì vậy, để cài đặt Nginx, hãy mở terminal bằng ctrl + alt + t và chạy:

sudo apt update && sudo apt install nginx

Quá trình cài đặt sẽ sớm hoàn tất và daemon Nginx sẽ tự động chạy trong nền. Vì vậy, để kiểm tra trạng thái của Nginx, hãy chạy:

trạng thái sudo systemctl nginx

Sau khi chạy lệnh trên, bạn sẽ nhận được trạng thái Nginx là hoạt động (đang chạy) màu xanh lá cây như được thấy bên dưới.

Cấu hình tường lửa Ubuntu (UFW)

Theo mặc định, các cổng đi HTTP (80) và HTTPS (443) bị đóng trên Ubuntu 20.04. Ngoài ra, trình nền tường lửa mặc định ufw bị vô hiệu hóa vì tất cả các cổng đều bị đóng.

Do đó, để truy cập máy chủ Nginx từ các hệ thống khác, bạn cần bật ufw và thiết lập nó một cách chính xác để cho phép lưu lượng truy cập trên cổng 80443. Trước khi bạn kích hoạt ufw, biết rằng nếu bạn đang thiết lập Nginx trên một máy chủ từ xa, trước tiên hãy cập nhật ufw quy tắc cho phép ssh bằng cách chạy:

sudo ufw allow ssh

Lệnh trên cho phép ssh truy cập vào máy chủ từ xa mà không cho phép ssh bạn sẽ bị khóa máy chủ từ xa.

Sau khi kích hoạt ssh truy cập, bạn có thể bật ufw trình nền tường lửa bằng cách chạy:

sudo ufw kích hoạt

Bây giờ, bạn cần thay đổi các quy tắc tường lửa để cho phép các cổng HTTP và HTTPS để Nginx có thể phục vụ lưu lượng truy cập web. Để thay đổi các quy tắc, hãy chạy:

sudo ufw allow 'Nginx Full'

Nginx đầy đủ cho phép cả hai cổng HTTP và HTTPS cho lưu lượng đến và đi từ tất cả các địa chỉ IP.

Sau đó, hãy xác minh xem các quy tắc có được thêm vào ufw tường lửa bằng cách chạy lệnh:

tình trạng sudo ufw

Lệnh trên sẽ xuất ra các quy tắc mà chúng tôi đã thêm vào ufw trình nền tường lửa.

Kết nối với Máy chủ Nginx

Bây giờ chúng tôi đã cài đặt Nginx và cấu hình ufw để cho phép lưu lượng truy cập web HTTP và HTTPS đến, bạn sẽ có thể truy cập máy chủ Nginx bằng cách sử dụng địa chỉ IP của máy chủ.

Nếu bạn không biết địa chỉ IP của máy chủ, hãy sử dụng lệnh bên dưới để dễ dàng truy xuất địa chỉ đó.

ip addr hiển thị eth0 | grep inet | awk '{in $ 2; } '| sed 's /\/.*$//'

Khi bạn đã có địa chỉ IP, hãy dán địa chỉ đó vào trình duyệt của bạn và nhấn enter.

// your-server-ip

Nếu mọi thứ được định cấu hình chính xác, bạn sẽ có thể xem trang web 'Chào mừng bạn đến với nginx!'.

Tệp và Thư mục Nginx

Bây giờ chúng tôi đã cài đặt và chạy Nginx trên máy chủ của bạn. Hãy để chúng tôi xem xét một số tệp và thư mục Nginx quan trọng mà bạn sẽ phải sử dụng để định cấu hình trang web / ứng dụng web của mình.

Nội dung máy chủ web

Bạn có thể định cấu hình bất kỳ vị trí nào bạn muốn làm thư mục gốc cho khối máy chủ của mình. HTML trực tiếp mặc định của Nginx là / var / www / html, đó là nơi đặt trang "chào mừng" mà chúng tôi đã truy cập trước đó.

Các vị trí khác thường được sử dụng làm thư mục gốc cho các miền bao gồm:

  • /Trang Chủ//
  • / var / www / html /
  • /opt/

Tệp cấu hình Nginx

Tất cả các tệp cấu hình Nginx đều nằm trong / etc / nginx danh mục. Hãy xem một số tệp quan trọng mà chúng ta cần để thiết lập một miền cơ bản.

  • /etc/nginx/nginx.conf: Tệp này chứa tất cả cấu hình cần thiết để chạy Nginx.
  • / etc / nginx / sites-available /: Thư mục này có tất cả cấu hình khối máy chủ của các miền, nhưng hiện chưa được kích hoạt / triển khai và do đó máy khách không thể truy cập được.
  • / etc / nginx / sites-enable /: Thư mục này chứa các miền hiện đang hoạt động / được kích hoạt mà khách hàng có thể truy cập. Để kích hoạt miền, chúng tôi cần liên kết tệp cấu hình miền từ trang web có sẵn đến các trang web được kích hoạt danh mục.
  • / etc / nginx / snippets/: Trong thư mục này, chúng tôi có thể lưu trữ các phân đoạn cấu hình có thể tái sử dụng. Nó tiết kiệm rất nhiều thời gian trong môi trường sản xuất do thực tế là nó có thể làm cho các phân đoạn / khối cấu hình có thể tái sử dụng.

Nhật ký máy chủ

Nginx ghi nhật ký các sự kiện / hoạt động và lưu trữ chúng trong các tệp nhật ký trong / var / log / nginx danh mục. Nginx ghi lại các hoạt động trong các tệp này:

  • /var/log/nginx/access.log: Tệp này ghi nhật ký các máy khách đã truy cập vào máy chủ Nginx. Thông tin chi tiết bao gồm địa chỉ IP của máy khách, ngày giờ, trình duyệt được sử dụng để truy cập máy chủ và Hệ điều hành.
  • /var/log/nginx/error.log: Tệp này ghi lại các lỗi mà máy chủ Nginx gặp phải trong khi chạy.

Vì vậy, trong phần này, chúng ta đã xem xét sơ qua một số tệp và thư mục Nginx quan trọng đủ để bắt đầu.

Thiết lập khối máy chủ

Bây giờ chúng ta đã có một số kiến ​​thức cơ bản về tệp và máy chủ Nginx, chúng ta đã sẵn sàng thiết lập khối máy chủ của riêng mình. Các khối máy chủ tương tự như các máy chủ ảo Apache.

Chúng tôi sẽ xem xét cách tạo khối máy chủ và để chứng minh rằng chúng tôi sẽ sử dụng example.com như miền trong quá trình tạo.

💡 Thay thế example.com với tên miền của bạn.

Trước khi bắt đầu cấu hình Khối máy chủ, chúng ta cần tạo một thư mục để làm thư mục gốc cho nội dung trang web. Hãy để chúng tôi tạo /var/www/example.com/html thư mục cho miền sử dụng mkdir yêu cầu.

sudo mkdir -p /var/www/example.com/html

Các -P tùy chọn sẽ tạo tất cả các thư mục mẹ cần thiết. Đó là, nó sẽ tạo ra example.com một thư mục mẹ cho html nếu nó không tồn tại.

Thay đổi quyền sở hữu của thư mục với USER $ biến môi trường:

sudo chown -R $ USER: $ USER /var/www/example.com/html

Tiếp theo, tạo một index.html tệp sẽ được truy cập khi bạn truy cập vào miền đang được định cấu hình. Điều này chỉ dành cho mục đích giải thích.

nano /var/www/example.com/html/index.html

Dán nội dung sau vào tệp chúng tôi vừa tạo trên máy chủ.

  Chào mừng đến với example.com! 

Yo! Example.com có ​​thể truy cập được!

nhấn ctrl + o để viết và lưu index.html tập tin và sau đó, nhấn ctrl + x thoát ra nano người biên tập.

Bây giờ cuối cùng chúng ta có thể chuyển sang tạo một khối máy chủ để Nginx có thể phục vụ index.html khi một số người dùng truy cập example.com. Vì vậy, để tạo một khối máy chủ, chúng ta cần tạo một tệp cấu hình có tên example.com trong trang web có sẵn danh mục. Để làm như vậy, chúng tôi sử dụng nano và chạy:

sudo nano /etc/nginx/sites-available/example.com

Và sau đó, nhập hoặc sao chép / dán cấu hình sau. Sau đó nhấn ctrl + o và nhập để viết và lưu. Tương tự, nhấn ctrl + x để đóng trình chỉnh sửa nano.

máy chủ {nghe 80; nghe [::]: 80; server_name example.com www.example.com; root /var/www/example-domain.com/html; chỉ mục index.html; vị trí / {try_files $ uri $ uri / = 404; }}

Cấu hình trên tương tự như cấu hình khối máy chủ mặc định, chúng tôi đã thay đổi nguồn gốc câu lệnh để trỏ đến thư mục gốc mới của chúng tôi và thay đổi tên máy chủ tên miền của chúng tôi. Trong khi địa điểm{} câu lệnh đóng vai trò là câu lệnh bắt lỗi nếu không tìm thấy tệp và hiển thị lỗi 404 cho máy khách.

Tiếp theo, chúng tôi có thể kích hoạt khối máy chủ của mình để Nginx sẽ phục vụ example.com trang web. Để kích hoạt khối máy chủ của chúng tôi, chúng tôi cần tạo một liên kết biểu tượng của example.com tập tin từ trang web có sẵn đến các trang web được kích hoạt danh mục. Để làm như vậy, hãy chạy:

sudo ln -s /etc/nginx/sites-available/example.com / etc / nginx / sites-enable

Một liên kết sẽ được tạo trong kích hoạt trang web thư mục và bây giờ example.com nên được kích hoạt. Bây giờ chúng tôi đã bật hai khối máy chủ trên máy chủ Nginx của chúng tôi, máy chủ này sẽ phản hồi yêu cầu dựa trên nghesever_name chỉ thị được lưu trong example.com cấu hình khối máy chủ.

Để kiểm tra xem tất cả các tệp cấu hình có đúng và không có lỗi cú pháp hay không, hãy chạy:

sudo nginx -t

Bây giờ, cuối cùng hãy khởi động lại Nginx để áp dụng các thay đổi bằng cách chạy lệnh sau:

sudo systemctl khởi động lại nginx

Nginx sẽ bắt đầu phục vụ khối máy chủ của bạn ngay bây giờ, bạn có thể truy cập // tên-miền của bạn và xem trực tiếp trang web của bạn.

Ghi chú: Để phần trên hoạt động, bạn cần thiết lập miền của riêng mình và thay thế example.com với tên miền của riêng bạn. Ngoài ra, bạn sẽ phải định cấu hình DNS cho miền của mình để trỏ đến địa chỉ IP của máy chủ Nginx của bạn.

Để kết thúc, chúng ta đã xem xét cách cài đặt Nginx, cấu hình ufw để cho phép truy cập từ xa vào máy chủ Nginx, được kết nối với Nginx từ xa, làm quen với một số tệp và thư mục Nginx cơ bản và học cách thiết lập khối máy chủ.

Để biết và tìm hiểu thêm về Nginx, bạn có thể muốn xem trang wiki của Nginx.