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 80
và 443
. 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
đếncá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 nghe
và sever_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.