Esta questão foi originalmente perguntada sobre o Mac OS X Server 4.1, mas como os números de versão do software mudaram, e agora estou trabalhando, esta resposta está escrita a partir do macOS Server 5.2. O Servidor 5 aparentemente muda um pouco as coisas em que todo todo serviço no Servidor está agora atrás de um proxy reverso mestre, então estas instruções não funcionarão com o Servidor 4.1.
Arquivos de configuração
Faça o arquivo de configuração do aplicativo da web na máquina do servidor do macOS, em /Library/Server/Web/Config/apache2/httpd_site2webapp.conf
, apontando para o endereço IP do servidor site2
.
ProxyPreserveHost On
ProxyPassReverse / http://192.168.1.15:80/
ProxyPass / http://192.168.1.15:80/
ServerName site2.example.com
Em seguida, em /Library/Server/Web/Config/apache2/webapps/com.example.site2webapp.plist
, adicione o seguinte, fazendo referência ao local do arquivo .conf
acima:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!-- See man pages for webapp.plist(5) and webappctl(8) for information about this example webapp.plist -->
<plist version="1.0">
<dict>
<key>includeFiles</key>
<array> <!-- Include files are activated in virtual host when webapp is started -->
<string>/Library/Server/Web/Config/apache2/httpd_site2webapp.conf</string>
</array>
<key>name</key>
<string>com.example.site2webapp</string>
<key>displayName</key> <!-- Name shown in Server app -->
<string>site2WebApp</string>
<key>installationIndicatorFilePath</key> <!-- The presence of this file indicates web app is installed -->
<string>/Library/Server/Web/Config/apache2/httpd_site2webapp.conf</string>
<key>sslPolicy</key><!-- Determines webapp SSL behavior -->
<integer>0</integer> <!-- 0: default, UseSSLWhenEnabled -->
<!-- 1: UseSSLAlways -->
<!-- 2: UseSSLOnlyWhenCertificateIsTrustable -->
<!-- 3: UseSSLNever -->
<!-- 4: UseSSLAndNonSSL -->
</dict>
</plist>
Se você também precisar de SSL, coloque também o seguinte em /Library/Server/Web/Config/apache2/httpd_site2SSLwebapp.conf
. A configuração difere em que o tráfego de LAN entre os servidores será descriptografado por padrão (esta configuração essencialmente diz ao Servidor para não verificar se existe um certificado válido), mas o tráfego da WAN será criptografado. Acredito que você possa instalar um certificado autoassinado no servidor site2
para o tráfego local criptografado, mas essa configuração ainda ativará o proxy reverso sem precisar ter certificados correspondentes. (Eu admito que há uma maneira mais correta de proteger o tráfego local, mas isso funcionou para mim.)
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPreserveHost On
ProxyPassReverse / http://192.168.1.15:80/
ProxyPass / http://192.168.1.15:80/
ServerName site2.example.com
E o plist do aplicativo da web SSL correspondente, /Library/Server/Web/Config/apache2/webapps/com.example.site2SSLwebapp.plist
, o mesmo que acima:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!-- See man pages for webapp.plist(5) and webappctl(8) for information about this example webapp.plist -->
<plist version="1.0">
<dict>
<key>includeFiles</key>
<array> <!-- Include files are activated in virtual host when webapp is started -->
<string>/Library/Server/Web/Config/apache2/httpd_site2SSLwebapp.conf</string>
</array>
<key>name</key>
<string>com.example.site2SSLwebapp</string>
<key>displayName</key> <!-- Name shown in Server app -->
<string>site2SSLWebApp</string>
<key>installationIndicatorFilePath</key> <!-- The presence of this file indicates web app is installed -->
<string>/Library/Server/Web/Config/apache2/httpd_site2SSLwebapp.conf</string>
<key>sslPolicy</key><!-- Determines webapp SSL behavior -->
<integer>0</integer> <!-- 0: default, UseSSLWhenEnabled -->
<!-- 1: UseSSLAlways -->
<!-- 2: UseSSLOnlyWhenCertificateIsTrustable -->
<!-- 3: UseSSLNever -->
<!-- 4: UseSSLAndNonSSL -->
</dict>
</plist>
Para cada um desses quatro arquivos, as permissões precisam ser owner: root e group: wheel, 644:
$ sudo chown -R root:wheel /path/to/file
$ sudo chmod -R 644 /path/to/file
Configurando o Server.app
Adicione o aplicativo da web aos sites
- Na guia Sites da interface Server.app, clique no + abaixo da listagem de sites para adicionar um novo site
- Insira
site2.example.com
para o nome de domínio - Deixar tudo nas configurações padrão
- Clique em Editar configurações avançadas…
- Na seção "Disponibilizar esses aplicativos da web neste site:" marque Ativar para site2WebApp
- Clique em OK
- Clique em Criar
SSL
Se você precisar de SSL na WAN, instale um certificado no Servidor que cubra o novo domínio. Eu usei Vamos criptografar para criar um certificado único que seja bom para os meus site1
e site2
domínios.
- Na guia Certificados do Server.app, clique em + na parte inferior da janela e, em seguida, em Importar uma identidade de certificado…
- Arraste e solte os arquivos
.pem
que você recebeu de Let's Encrypt (ou quaisquer arquivos de certificado que você tenha) e clique em Importar - Na guia Sites , crie o novo site quase como antes, mas altere a porta para
443
e, em Certificado SSL, escolha o certificado que você acabou de importar - Em Editar configurações avançadas… , marque Ativar para site2SSLWebApp
Minha resposta acima foi adaptada das instruções encontradas no link . Aviso: este link faz download de um arquivo zip com PDF e exemplos de arquivos de configuração do aplicativo da Web do servidor. O zip deles também inclui instruções históricas para fazer isso com o Servidor 4.1.