Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Làm cách nào tôi có thể định cấu hình OpenLiteSpeed ​​​​để đảo ngược proxy sang Nextcloud nằm trên mạng nội bộ của tôi?

Điều đáng ngạc nhiên là tìm kiếm OpenLiteSpeed ​​trên Habré không mang lại kết quả gì! Tôi vội đính chính sự bất công này, vì LSWS là một máy chủ web xứng đáng. Tôi thích nó vì tốc độ và giao diện quản trị web lạ mắt:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Mặc dù thực tế là OpenLiteSpeed ​​​​nổi tiếng nhất với tư cách là một “trình tăng tốc” WordPress, nhưng trong bài viết hôm nay tôi sẽ trình bày một ứng dụng khá cụ thể của nó. Cụ thể là ủy quyền ngược các yêu cầu. Bạn có cho rằng việc sử dụng nginx cho việc này là phổ biến hơn không? Tôi sẽ đồng ý. Nhưng chúng tôi thực sự yêu LSWS!

Ủy quyền thì được, nhưng ở đâu? Một dịch vụ tuyệt vời không kém là Nextcloud. Chúng tôi sử dụng Nextcloud để tạo "đám mây chia sẻ tệp" riêng tư. Đối với mỗi khách hàng, chúng tôi phân bổ một VM riêng với Nextcloud và chúng tôi không muốn để chúng “ra ngoài”. Thay vào đó, chúng tôi ủy quyền các yêu cầu thông qua một proxy ngược phổ biến. Giải pháp này cho phép bạn:
1) xóa máy chủ lưu trữ dữ liệu của khách hàng khỏi Internet và
2) lưu địa chỉ IP.

Đề án trông như thế này:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Rõ ràng là sơ đồ đã được đơn giản hóa, bởi vì tổ chức cơ sở hạ tầng dịch vụ web không phải là chủ đề của bài viết hôm nay.

Cũng trong bài viết này tôi sẽ bỏ qua phần cài đặt và cấu hình cơ bản của nextcloud, đặc biệt vì có tài liệu về chủ đề này trên Habré. Nhưng tôi chắc chắn sẽ chỉ cho bạn các cài đặt mà nếu không có Nextcloud sẽ không hoạt động sau proxy.

Được:
Nextcloud được cài đặt trên máy chủ 1 và được cấu hình để hoạt động qua http (không có SSL), chỉ có giao diện mạng cục bộ và địa chỉ IP “màu xám” 172.16.22.110.
Hãy cấu hình OpenLiteSpeed ​​​​trên máy chủ 2. Nó có hai giao diện, một giao diện bên ngoài (xem Internet) và một giao diện bên trong có địa chỉ IP trên mạng 172.16.22.0/24
Tên DNS cloud.connect.link dẫn đến địa chỉ IP giao diện ngoài của máy chủ 2

Thử thách:
Nhận từ Internet bằng liên kết 'https://cloud.connect.link' (SSL) trên Nextcloud trên mạng nội bộ.

  • Cài đặt OpenLiteSpeed ​​​​trên Ubuntu 18.04.2.

Hãy thêm một kho lưu trữ:

quên -O — http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |sudo bash
sudo apt-get update

cài đặt, chạy:

sudo apt-get cài đặt openlitespeed
sudo /usr/local/lsws/bin/lswsctrl bắt đầu

  • Hãy thiết lập một tường lửa tối thiểu.

    sudo ufw cho phép ssh
    sudo ufw mặc định cho phép gửi đi
    sudo ufw mặc định từ chối đến
    sudo ufw cho phép http
    sudo ufw cho phép https
    sudo ufw cho phép từ máy chủ quản lý của bạn đến bất kỳ cổng 7080 nào
    sudo ufw enable

  • Hãy định cấu hình OpenLiteSpeed ​​​​làm proxy ngược.
    Hãy tạo thư mục cho virtualhost.

    cd /usr/local/lsws/
    sudo mkdirc cloud.connect.link
    cd cloud.connect.link/
    sudo mkdir {conf,html,logs}
    sudo chown lsadm:lsadm ./conf/

Hãy cấu hình máy chủ ảo từ giao diện web LSWS.
Quản lý URL mở http://cloud.connect.link:7080
Đăng nhập/mật khẩu mặc định: admin/123456

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Thêm máy chủ ảo (Máy chủ ảo > Thêm).
Khi thêm sẽ xuất hiện thông báo lỗi cho biết thiếu file cấu hình. Điều này là bình thường và có thể giải quyết bằng cách nhấn vào Click to create.

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Trong tab Chung, chỉ định Document Root (mặc dù không cần thiết nhưng cấu hình sẽ không hoạt động nếu không có nó). Tên miền, nếu không được chỉ định, sẽ được lấy từ Tên máy chủ ảo mà chúng tôi gọi là tên miền của mình.

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Bây giờ là lúc cần nhớ rằng chúng ta không chỉ có máy chủ web mà còn có proxy ngược. Các cài đặt sau sẽ cho LSWS biết cần ủy quyền những gì và ở đâu. Trong cài đặt máy chủ ảo, hãy mở tab Ứng dụng bên ngoài và thêm ứng dụng mới thuộc loại máy chủ Web:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Chúng tôi cho biết tên và địa chỉ. Bạn có thể chỉ định một tên tùy ý nhưng cần phải nhớ nó; nó sẽ hữu ích trong các bước tiếp theo. Địa chỉ là nơi Nextcloud tồn tại trên mạng nội bộ:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Trong cùng cài đặt máy chủ ảo, hãy mở tab Ngữ cảnh và tạo ngữ cảnh mới của loại Proxy:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Chỉ định các tham số: URI=/, Web server=nextcloud_1 (tên từ bước trước)

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Khởi động lại LSWS. Việc này được thực hiện chỉ bằng một cú nhấp chuột từ giao diện web, thật kỳ diệu! (người mang chuột di truyền trong tôi lên tiếng)

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược
Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

  • Chúng tôi cài đặt chứng chỉ và định cấu hình https.
    Thủ tục lấy chứng chỉ chúng tôi sẽ bỏ qua nó và đồng ý rằng chúng tôi đã có nó và nó nằm cùng với khóa trong thư mục /etc/letsencrypt/live/cloud.connect.link.

Hãy tạo một “người nghe” (Người nghe > Thêm), gọi nó là “https”. Hãy trỏ nó tới cổng 443 và lưu ý rằng nó sẽ An toàn:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Trong tab SSL, chỉ ra đường dẫn đến khóa và chứng chỉ:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

“Trình nghe” đã được tạo, bây giờ trong phần Ánh xạ máy chủ ảo, chúng tôi sẽ thêm máy chủ ảo của mình vào đó:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Nếu LSWS chỉ ủy quyền cho một dịch vụ thì việc cấu hình có thể được hoàn tất. Nhưng chúng tôi dự định sử dụng nó để chuyển yêu cầu đến các “cơ quan có thẩm quyền” khác nhau tùy thuộc vào tên miền. Và tất cả các miền sẽ có chứng chỉ riêng. Do đó, bạn cần đi tới cấu hình máy chủ ảo và chỉ định lại khóa và chứng chỉ của nó trong tab SSL. Trong tương lai, việc này sẽ được thực hiện cho mỗi máy chủ ảo mới.

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Tất cả những gì còn lại là định cấu hình viết lại url để các yêu cầu http được gửi tới https.
(Nhân tiện, khi nào điều này sẽ kết thúc? Đã đến lúc các trình duyệt và phần mềm khác chuyển sang https theo mặc định và chuyển tiếp sang không có SSL theo cách thủ công nếu cần).
Bật Enable Rewrite và ghi lại Rewrite Rules:

RewriteCond% {SERVER_PORT} 80
Viết lại quy tắc ^ (. *) $ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Do một sự hiểu lầm kỳ lạ, bạn không thể áp dụng quy tắc Viết lại bằng cách khởi động lại Graceful thông thường. Do đó, hãy khởi động lại LSWS không một cách duyên dáng mà một cách đại khái và hiệu quả:

sudo systemctl khởi động lại lsws.service

Để server nghe được cổng 80 chúng ta sẽ tạo một Listener khác. Hãy gọi nó là http, cho biết cổng thứ 80 và thực tế là nó sẽ không an toàn:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Bằng cách tương tự với việc thiết lập trình nghe https, hãy ánh xạ máy chủ ảo của chúng ta tới nó.

Bây giờ LSWS sẽ lắng nghe cổng 80 và gửi yêu cầu từ cổng đó đến 443, viết lại url.
Cuối cùng, tôi khuyên bạn nên giảm mức ghi nhật ký LSWS, được đặt thành Gỡ lỗi theo mặc định. Ở chế độ này, nhật ký sẽ nhân lên với tốc độ cực nhanh! Đối với hầu hết các trường hợp, mức Cảnh báo là đủ. Đi tới Cấu hình máy chủ > Nhật ký:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Việc này hoàn tất việc cấu hình OpenLiteSpeed ​​làm proxy ngược. Một lần nữa chúng ta khởi động lại LSWS, theo link https://cloud.connect.link và chúng tôi thấy:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Để Nextcloud cho phép chúng tôi tham gia, chúng tôi cần thêm miền cloud.connect.link vào danh sách những người đáng tin cậy. Hãy đi chỉnh sửa config.php. Tôi đã tự động cài đặt Nextcloud khi cài đặt Ubuntu và cấu hình nằm ở đây: /var/snap/nextcloud/current/nextcloud/config.
Thêm tham số 'cloud.connect.link' vào khóa Trusted_domains:

'miền_đáng tin cậy' =>
mảng (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Tiếp theo, trong cùng cấu hình, bạn cần chỉ định địa chỉ IP của proxy của chúng tôi. Xin lưu ý rằng địa chỉ phải được chỉ định là địa chỉ hiển thị với máy chủ Nextcloud, tức là. IP giao diện cục bộ LSWS. Nếu không có bước này, giao diện web Nextcloud sẽ hoạt động nhưng các ứng dụng không được cấp phép.

'trust_proxies' =>
mảng (
0 => '172.16.22.100',
),

Tuyệt vời, sau này chúng ta có thể vào giao diện ủy quyền:

Nextcloud bên trong và bên ngoài OpenLiteSpeed: thiết lập proxy ngược

Vấn đề đã được giải quyết! Giờ đây, mỗi khách hàng có thể sử dụng “đám mây tệp” một cách an toàn bằng cách sử dụng URL cá nhân của họ, máy chủ chứa các tệp được tách biệt khỏi Internet, các khách hàng trong tương lai sẽ nhận được mọi thứ như cũ và không một địa chỉ IP bổ sung nào sẽ bị tổn hại.
Ngoài ra, bạn có thể sử dụng proxy ngược để phân phối nội dung tĩnh, nhưng trong trường hợp Nextcloud, điều này sẽ không giúp tốc độ tăng lên đáng kể. Vì vậy, đây là tùy chọn và tùy chọn.

Tôi rất vui được chia sẻ câu chuyện này, tôi hy vọng nó sẽ hữu ích cho ai đó. Nếu bạn biết các phương pháp thanh lịch và hiệu quả hơn để giải quyết vấn đề này, tôi sẽ biết ơn ý kiến ​​​​của bạn!

Nguồn: www.habr.com

Thêm một lời nhận xét