Configurar proxy inverso com Apache

Imos configurar um proxy inverso com Apache, e como exemplo, imos fazer que a instalaçom que fixemos de Jellyfin seja accesível como se de umha web normal se trata-se, escrevendo um nome de domínio. Ademais, aplicaremos umha capa de seguridade estabelecendo que todos o tráfico seja cifrado utilizando os certificados que nos proporciona Let’s Encrypt.

O domínio a usar neste exemplo vai ser jellyfin.exemplo.com, que haveria que mudar polo dominio real.

A configuraçom de Apache vem explicada na documentaçom oficial.

Bem, começamos, a prática é para um servidor Ubuntu 18.04.

Instalamos apache:

sudo apt install apache2 -y

Habilitamos os módulos que nos indicam na documentaçom oficial:

sudo a2enmod proxy proxy_http proxy_wstunnel ssl

Agora, diriximo-nos ao diretório /etc/apache2/sites-available e criamos o ficheiro jellyfin.conf co nosso editor de texto preferido e co seguinte conteúdo (mudar domínios e IP’s polas que corrspondam):

<VirtualHost *:80>

	ServerName jellyfin.exemplo.com
	ServerAlias www.jellyfin.exemplo.com	
	ProxyPreserveHost on
	ProxyPass		"/embywebsocket"	"ws://192.168.0.160:8096/embywebsocket"
	ProxyPassReverse	"/embywebsocket"	"ws://192.168.0.160:8096/embywebsocket"
	ProxyPass		"/"			"http://192.168.0.160:8096/"
	ProxyPassReverse	"/"			"http://192.168.0.160:8096/"

</VirtualHost>

Habilitamos o sítio com

sudo a2ensite jellyfin.conf

E recarregamos o serviço de apache

sudo systemctl reload apache2.service

Estes dous passos repetimo-los sempre que modifiquemos ou criemos algum ficheiro de configuraçom de um Host Virtual em apache.

E com isto já teriamos o jellyfin accesível para o domínio jellyfin.exemplo.com polo porto 80, polo que, abrindo esse porto no nosso router, poderiamos acceder diretamente desde qualquer lugar com acceso a internet.

Se fora para um servidor web, creariamos outro ficheiro, por exemplo web.conf, co conteúdo que poderia ficar como segue:

<VirtualHost *:80>

	ServerName web.exemplo.com
	ServerAlias www.web.exemplo.com	
	ProxyPreserveHost on
	ProxyPass		"/"			"http://192.168.0.160/"
	ProxyPassReverse	"/"			"http://192.168.0.160/"

</VirtualHost>

Ou se a página web estivera por exemplo no diretório var/www/html/blogue/ e escoitando polo porto 5000, ficaria:

<VirtualHost *:80>

	ServerName web.exemplo.com
	ServerAlias www.web.exemplo.com	
	ProxyPreserveHost on
	ProxyPass		"/blogue/"			"http://192.168.0.160:5000/"
	ProxyPassReverse	"/blogue/"			"http://192.168.0.160:5000/"

</VirtualHost>

Mas ainda ficaria a parte da encriptaçom, já que com esta configuraçom as nossas senhas, usuários e conteúdos viajariam em plano para o mundo todo. Entom, imos dar accesso por https com Let’s encrypt, para facilitar o processo o máximo possível e ademais dispor de um certificado reconhecido por todos os navegadores.

Isto sería válido tanto para o Jellyfin coma para as webs que tiveramos no nosso servidor, ou noutro servidor mas reencaminhadas polo proxy inverso.

Instalando o certificado de Let’s Encrypt com certbot

Novamente seguimos a documentaçom oficial desde a página de certbot:

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt update

E agora instalamos com:

sudo apt install certbot

Agora que o temos instalado, por meio do comando

sudo certbot --apache

Abrirá-se um processo onde podemos escolher a que domínios lhe queremos criar um certificado e umha opçom para que, por defecto, todo o tráfico se redireccione por https.

Para que o processo remate com sucesso, deveremos ter o porto 443 do nosso router aberto.

Deixe um comentário