Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Paano ko ise-set up ang OpenLiteSpeed ​​​​upang baligtarin ang proxy sa Nextcloud sa panloob na network?

Nakakagulat, ang paghahanap sa Habré para sa OpenLiteSpeed ​​​​ay walang ibibigay! Nagmamadali akong itama ang kawalang-katarungang ito, dahil ang LSWS ay isang disenteng web server. Gustung-gusto ko ito para sa bilis at magarbong interface ng web administration:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Kahit na ang OpenLiteSpeed ​​​​ay pinakasikat bilang isang WordPress "accelerator", sa artikulong ngayon ay magpapakita ako ng medyo tiyak na paggamit nito. Namely reverse proxying ng mga kahilingan (reverse proxy). Sinasabi mo na mas karaniwan na gumamit ng nginx para dito? papayag ako. Pero sobrang sakit na inlove tayo sa LSWS!

Ang pag-proxy ay ok, ngunit saan? Sa hindi gaanong kahanga-hangang serbisyo - Nextcloud. Ginagamit namin ang Nextcloud upang lumikha ng pribadong "mga ulap sa pagbabahagi ng file". Para sa bawat kliyente, naglalaan kami ng hiwalay na VM sa Nextcloud, at hindi namin gustong ilantad ang mga ito sa "labas". Sa halip, humihiling kami ng proxy sa pamamagitan ng isang karaniwang reverse proxy. Ang solusyon na ito ay nagbibigay-daan sa:
1) alisin ang server kung saan naka-imbak ang data ng kliyente mula sa Internet at
2) i-save ang mga ip-address.

Ang scheme ay ganito:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Ito ay malinaw na ang pamamaraan ay pinasimple, dahil Ang organisasyon ng imprastraktura ng mga serbisyo sa web ay hindi ang paksa ng artikulo ngayon.

Gayundin sa artikulong ito ay aalisin ko ang pag-install at pangunahing pagsasaayos ng nextcloud, lalo na dahil may mga materyales sa paksang ito sa Habré. Ngunit tiyak na ipapakita ko ang mga setting, kung wala ang Nextcloud ay hindi gagana sa likod ng isang proxy.

Ibinigay:
Ang Nextcloud ay naka-install sa host 1 at na-configure upang gumana sa http (walang SSL), mayroon lamang isang lokal na interface ng network at isang "grey" na IP address na 172.16.22.110.
I-configure natin ang OpenLiteSpeed ​​​​sa host 2. Mayroon itong dalawang interface, panlabas (tumingin sa Internet) at panloob na may IP address sa network 172.16.22.0/24
Ang IP address ng panlabas na interface ng host 2 ay pangalan ng DNS cloud.connect.link

Problema:
Kumuha mula sa Internet sa pamamagitan ng link 'https://cloud.connect.link' (SSL) sa Nextcloud sa panloob na network.

  • Pag-install ng OpenLiteSpeed ​​​​sa Ubuntu 18.04.2.

Magdagdag tayo ng repositoryo:

wget -O http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |sudo bash
sudo apt-makakuha ng update

i-install, patakbuhin:

sudo apt-get install openlitespeed
sudo /usr/local/lsws/bin/lswsctrl simulan

  • Minimal na pag-setup ng firewall.

    sudo ufw payagan ang ssh
    sudo ufw default payagan ang palabas
    sudo ufw default na tanggihan ang papasok
    sudo ufw pahintulutan ang http
    sudo ufw allowhttps
    sudo ufw allow from iyong host ng pamamahala sa anumang port 7080
    sudo ufw paganahin

  • I-set up ang OpenLiteSpeed ​​​​bilang isang reverse proxy.
    Gumawa tayo ng mga direktoryo sa ilalim ng virtualhost.

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

I-configure natin ang virtual host mula sa LSWS web interface.
Buksan ang pamamahala ng url http://cloud.connect.link:7080
Default na login/password: admin/123456

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Magdagdag ng virtual host (Mga Virtual Host > Magdagdag).
Kapag nagdadagdag, may lalabas na mensahe ng error - nawawala ang configuration file. Ito ay normal, malulutas sa pamamagitan ng pag-click sa I-click upang lumikha.

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Sa tab na Pangkalahatan, tukuyin ang Document Root (bagaman hindi ito kailangan, ang config ay hindi aalis kung wala ito). Ang Domain Name, kung hindi tinukoy, ay kukunin mula sa Virtual Host Name, na pinangalanan namin ang aming domain name.

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Ngayon ay oras na upang tandaan na mayroon kaming hindi lamang isang web server, ngunit isang reverse proxy. Ang mga sumusunod na setting ay magsasabi sa LSWS kung ano ang i-proxy at kung saan. Sa mga setting ng virtualhost, buksan ang tab na Panlabas na App at magdagdag ng bagong application ng uri ng Web server:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Tukuyin ang pangalan at address. Maaari mong tukuyin ang isang arbitrary na pangalan, ngunit kailangan mong tandaan ito, ito ay magiging kapaki-pakinabang sa mga susunod na hakbang. Ang address ay ang isa kung saan nakatira ang Nextcloud sa panloob na network:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Sa parehong mga setting ng virtual host, buksan ang tab na Konteksto at lumikha ng bagong konteksto ng uri ng Proxy:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Tukuyin ang mga parameter: URI = /, Web server = nextcloud_1 (pangalan mula sa nakaraang hakbang)

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

I-restart ang LSWS. Ginagawa ito sa isang pag-click mula sa web interface, mga himala! (isang namamana na tagadala ng mouse ang nagsasalita sa akin)

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying
Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Gumawa tayo ng "tagapakinig" (Listeners > Add), tawagin natin itong "https". Ituro ito sa port 443 at tandaan na ito ay magiging Secure:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Sa tab na SSL, tukuyin ang landas patungo sa susi at sertipiko:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Ang "tagapakinig" ay nilikha, ngayon sa seksyon ng Virtual Host Mappings idaragdag namin ang aming virtual host dito:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Kung ang LSWS ay mag-proxy lamang sa isang serbisyo, maaaring makumpleto ang pagsasaayos. Ngunit plano naming gamitin ito upang magpadala ng mga kahilingan sa iba't ibang "mga pagkakataon" depende sa pangalan ng domain. At lahat ng domain ay magkakaroon ng sarili nilang mga certificate. Samakatuwid, kailangan mong pumunta sa virtualhost config at muling tukuyin ang susi at sertipiko nito sa tab na SSL. Sa hinaharap, dapat itong gawin para sa bawat bagong virtual host.

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Ito ay nananatiling i-configure ang muling pagsusulat ng url upang ang mga kahilingan sa http ay matugunan sa https.
(Nga pala, kailan ito matatapos? Oras na para sa mga browser at iba pang software na pumunta sa https bilang default, at manu-manong ipasa sa walang-SSL kung kinakailangan).
I-on ang Enable Rewrite at isulat ang Rewrite Rules:

RewriteCond %{SERVER_PORT} 80
RewriteRule ^ (. *) $ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Dahil sa kakaibang hindi pagkakaunawaan, imposibleng ilapat ang mga panuntunan sa Rewrite gamit ang karaniwang Graceful restart. Samakatuwid, i-restart namin ang LSWS hindi maganda, ngunit walang pakundangan at mahusay:

sudo systemctl i-restart ang lsws.service

Para makinig ang server sa port 80, gumawa tayo ng isa pang Listener. Tawagan natin itong http, tukuyin ang ika-80 port at ito ay hindi Secure:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Sa pamamagitan ng pagkakatulad sa setting ng https listener, ilakip natin dito ang ating virtual host.

Ngayon ang LSWS ay makikinig sa port 80 at magpapadala ng mga kahilingan sa 443 mula dito, muling isusulat ang url.
Bilang konklusyon, inirerekumenda kong babaan ang antas ng pag-log ng LSWS, na nakatakda sa Debug bilang default. Sa mode na ito, ang mga log ay dumami sa bilis ng kidlat! Para sa karamihan ng mga kaso, ang antas ng Babala ay sapat. Pumunta sa Configuration ng Server > Log:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Kinukumpleto nito ang pagsasaayos ng OpenLiteSpeed ​​​​bilang isang reverse proxy. Muli, i-restart ang LSWS, sundan ang link https://cloud.connect.link at makita:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Upang mapapasok kami ng Nextcloud, kailangan naming idagdag ang cloud.connect.link na domain sa pinagkakatiwalaang listahan. Let's go edit config.php. Awtomatikong nag-install ako ng Nextcloud kapag nag-install ng Ubuntu at ang config ay matatagpuan dito: /var/snap/nextcloud/current/nextcloud/config.
Idagdag ang parameter na 'cloud.connect.link' sa trusted_domains key:

'trusted_domains' =>
array(
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Dagdag pa, sa parehong config, dapat mong tukuyin ang IP address ng aming proxy. Iginuhit ko ang iyong pansin sa katotohanan na ang address ay dapat na tinukoy ang isa na nakikita ng Nextcloud server, i.e. Ang IP ng lokal na interface ng LSWS. Kung wala ang hakbang na ito, gumagana ang Nextcloud web interface, ngunit hindi awtorisado ang mga application.

'trusted_proxies' =>
array(
0 => '172.16.22.100',
),

Mahusay, pagkatapos nito ay makapasok tayo sa interface ng awtorisasyon:

Nextcloud sa loob at labas ng OpenLiteSpeed: pag-set up ng reverse proxying

Nalutas ang problema! Ngayon ang bawat kliyente ay maaaring ligtas na gumamit ng "file cloud" sa kanyang sariling personal na url, ang server na may mga file ay hiwalay sa Internet, ang mga kliyente sa hinaharap ay makakatanggap ng lahat ng pareho at hindi isang solong karagdagang IP address ang maaapektuhan.
Bilang karagdagan, maaari kang gumamit ng reverse proxy upang maghatid ng static na nilalaman, ngunit sa kaso ng Nextcloud, hindi ito magbibigay ng kapansin-pansing pagtaas sa bilis. Kaya ito ay opsyonal at opsyonal.

Natutuwa akong ibahagi ang kwentong ito, sana ay maging kapaki-pakinabang ito sa isang tao. Kung alam mo ang mas matikas at mahusay na mga pamamaraan para sa paglutas ng problema, ako ay magpapasalamat para sa mga komento!

Pinagmulan: www.habr.com

Magdagdag ng komento