0

Làm thế nào để chạy Nginx cổng 80 mà không cần root user

Gần đây, tôi có một bài viết hướng dẫn cài đặt Nginx, trong đó có đề cập vấn đề cần tài khoản root để chạy Nginx trên cổng 80, cổng cho dịch vụ web HTTP mà mọi máy chủ đều dùng. Điều này không hoàn toàn chính xác. Sau khi tìm hiểu, tôi đã tìm ra cách chạy Nginx cổng 80 (cũng như các web server khác) mà không cần quyền root. Sau đây xin hướng dẫn mọi người cách cấu hình server để chạy Nginx với tài khoản user bình thường (không có quyền root).

root

Môi trường

  • CentOS 6.5
  • Nginx 1.9.3

Hướng giải quyết

Để một ứng dụng chạy trên một port nhỏ hơn 1000 mà không cần quyền root là bất khả thi. May mắn thay, có một thủ thuật nhỏ đó chính là forward port; ta có thể chạy ứng dụng trên một cổng bất kỳ lớn hơn 1000, sau đó thực hiện cấu hình tường lửa để forward HTTP request từ cổng 80 sang cổng thực của ứng dụng.

Thực hành

Đầu tiên, chúng ta cần dùng tài khoản root để mở port trên tường lửa iptables của CentOS:

Hai dòng lệnh đầu giúp bạn mở cổng 80 và 8080 (bạn có thể chọn một cổng khác cho Nginx), dòng thứ 3 sẽ redirect tất cả các request từ cổng 80 sang cổng 8080 mà Nginx đang chạy.

Bạn có thể kiểm tra lại danh sách các rule trong iptables đã chính xác chưa bằng lệnh:

Nếu danh sách rule hiện ra không đúng, bạn có thể gõ như dưới để xóa lệnh sai:

Sau đó thực hiện lưu lại bảng cấu hình rule và restart service:

Chạy với Nginx

Sau khi cấu hình iptables, bây giờ Nginx đã có thể chạy với một user bình thường mà không cần quyền root. Tắt nginx đi và chạy lại với user bình thường.

Chúc các bạn thành công! Hãy comment bên dưới nếu gặp khó khăn gì nhé.

Bình luận với Facebook

Hoàng Tựa

Yêu thích lập trình web và tạo ra những thứ đẹp đẽ.

Leave a Reply

Your email address will not be published. Required fields are marked *