Chuyện gì đang xảy ra vậy?
Bạn phải sử dụng Debian hoặc Ubuntu, vì ác sites-available / sites-enabledlogic không được sử dụng bởi bao bì ngược dòng của nginx từ http://nginx.org/packages/ .
Trong cả hai trường hợp, cả hai đều được thực hiện như một quy ước cấu hình với sự trợ giúp của includechỉ thị tiêu chuẩn /etc/nginx/nginx.conf.
Đây là một đoạn trích /etc/nginx/nginx.conftừ gói nginx chính thức từ nginx.org:
http {
…
include /etc/nginx/conf.d/*.conf;
}
Đây là một đoạn trích /etc/nginx/nginx.conftừ Debian / Ubuntu :
http {
…
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Vì vậy, theo quan điểm của NGINX, sự khác biệt duy nhất là các tệp từ conf.dsẽ được xử lý sớm hơn và, do đó, nếu bạn có các cấu hình âm thầm xung đột với nhau, thì các tệp đó conf.dcó thể được ưu tiên hơn các tệp trong đó sites-enabled.
Thực hành tốt nhất là conf.d.
Bạn nên sử dụng /etc/nginx/conf.d, vì đó là một quy ước tiêu chuẩn, và nên hoạt động ở bất cứ đâu.
Nếu bạn cần vô hiệu hóa một trang web, chỉ cần đổi tên tệp thành không còn .confhậu tố, rất dễ dàng, đơn giản và không có lỗi:
sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Hoặc ngược lại để kích hoạt một trang web:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Tránh sites-availablevà bằng sites-enabledmọi giá.
Tôi thấy hoàn toàn không có lý do để sử dụng sites-available/ sites-enabled:
Một số người đã đề cập nginx_ensitevà nginx_dissitecác tập lệnh - tên của các tập lệnh này thậm chí còn tồi tệ hơn phần còn lại của sự kiện này - nhưng các tập lệnh này cũng không được tìm thấy - chúng không có trong nginxgói ngay cả trong Debian (và có lẽ trong Ubuntu nữa) và không có trong một gói của riêng họ, ngoài ra, bạn có thực sự cần một tập lệnh bên thứ ba không chuẩn để chỉ cần di chuyển và / hoặc liên kết các tệp giữa hai thư mục không?!
Và nếu bạn không sử dụng các tập lệnh (trên thực tế, đó là một lựa chọn thông minh như trên), thì vấn đề là làm thế nào để bạn quản lý các trang web:
- Bạn có tạo các liên kết tượng trưng từ
sites-availableđến sites-enabled?
- Sao chép các tập tin?
- Di chuyển các tập tin?
- Chỉnh sửa các tập tin tại chỗ trong
sites-enabled?
Những điều trên có vẻ như là một số vấn đề nhỏ cần giải quyết, cho đến khi một số người bắt đầu quản lý hệ thống hoặc cho đến khi bạn đưa ra quyết định nhanh chóng, chỉ để quên nó hàng tháng hoặc hàng năm
Điều này đưa chúng ta đến:
Có an toàn để loại bỏ một tập tin từ sites-enabled? Có phải là liên kết mềm? Một liên kết cứng? Hoặc bản sao duy nhất của cấu hình? Một ví dụ điển hình của địa ngục cấu hình.
Những trang web đã bị vô hiệu hóa? (Với conf.d, chỉ cần thực hiện tìm kiếm đảo ngược cho các tệp không kết thúc bằng .conf- find /etc/nginx/conf.d -not -name "*.conf"hoặc sử dụng grep -v.)
Không chỉ tất cả những điều trên, mà còn lưu ý includechỉ thị cụ thể được sử dụng bởi Debian / Ubuntu - /etc/nginx/sites-enabled/*- không có hậu tố tên tệp nào được chỉ định cho sites-enabled, không giống như cho conf.d.
- Điều này có nghĩa là nếu một ngày nào đó bạn quyết định nhanh chóng chỉnh sửa một hoặc hai tệp trong đó
/etc/nginx/sites-enabledvà bạn emacstạo một tệp sao lưu như thế default~thì đột nhiên, bạn có cả hai defaultvà được default~bao gồm dưới dạng cấu hình hoạt động, tùy theo chỉ thị được sử dụng, thậm chí có thể không cung cấp bạn có bất kỳ cảnh báo nào và khiến phiên gỡ lỗi kéo dài diễn ra. (Vâng, điều đó đã xảy ra với tôi; đó là trong một cuộc thi hackathon và tôi hoàn toàn bối rối về lý do tại sao conf của tôi không hoạt động.)
Vì vậy, tôi tin rằng đó sites-enabledlà ác quỷ thuần túy!
www-datalà một chủ đề riêng biệt. Hầu hết các hệ điều hành xác định một người dùng riêng biệt với các quyền thấp hơn mà quy trình có thể chạy như sau khi liên kết với cổng 80 dưới dạng root. Nó được định nghĩa trong tập tin cấu hình. Áp dụng các thực hành bảo mật cơ bản từ đó; không để người dùng viết vào bất cứ thứ gì mà máy chủ web không cần phải ghi vào, đừng để người dùng khác ghi vào các tập tin trừ khi nó cố tình.