На сервере Ubuntu 16.04 у меня установлена система Nextcloud (SNAP) и система управления документами Collabora (Docker). Его внутренний IP-адрес - 192.1368.1.30
Прослушивание NextCloud-Snap на 443 Прослушивание Collabora-Docker на 9980
На этом сервере также имеется Apache2 со следующей конфигурацией для того, чтобы заставить разговоры приложения Collabora с NextCloud:
<VirtualHost *:80>
ServerName docs.mydomain.com
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:9081>
ServerName docs.mydomain.com
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
# keep the host
ProxyPreserveHost On
# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of LibreOffice Online
ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse /loleaflet https://127.0.0.1::9980/loleaflet
# WOPI discovery URL
ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery
# Main websocket
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon
# Admin Console websocket
ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /lool https://127.0.0.1:9980/lool
ProxyPassReverse /lool https://127.0.0.1:9980/lool
# ServerAlias docs.mydomain.com
SSLProxyEngine on
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
# Let's Encrypt Certificate
SSLCertificateFile /etc/letsencrypt/live/docs.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/docs.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
Ранее перед этой машиной находился обратный прокси-сервер для управления всеми перенаправлениями.
Файл конфигурации для Apache2 на Прокси-сервере был:
<VirtualHost *:80>
ServerName docs.mydomain.com
ProxyPreserveHost On
ProxyPass / http://192.168.1.30:80/
ProxyPassReverse / http://192.168.1.30:80/
</VirtualHost>
<VirtualHost *:443>
ServerName cloud.mydomain.com
ProxyPreserveHost On
ProxyPass / https://192.168.1.30/
ProxyPassReverse / https://192.168.1.30/
SSLProxyEngine on
SSLCertificateFile /etc/letsencrypt/live/cloud.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cloud.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
</VirtualHost>
<VirtualHost *:443>
ServerName docs.mydomain.com:443
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
# keep the host
ProxyPreserveHost On
# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of LibreOffice Online
ProxyPass /loleaflet https://192.168.1.30:9081/loleaflet retry=0
ProxyPassReverse /loleaflet https://192.168.1.30:9081/loleaflet
# WOPI discovery URL
ProxyPass /hosting/discovery
https://192.168.1.30:9081/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery
https://192.168.1.30:9081/hosting/discovery
# Main websocket
ProxyPassMatch "/lool/(.*)/ws$" wss://192.168.1.30:9081/lool/$1/ws nocanon
# Admin Console websocket
ProxyPass /lool/adminws wss://192.168.1.30:9081/lool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /lool https://192.168.1.30:9081/lool
ProxyPassReverse /lool https://192.168.1.30:9081/lool
# ServerAlias docs.brains.engineering
SSLProxyEngine on
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
# Let's Encrypt Certificate
SSLCertificateFile /etc/letsencrypt/live/docs.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/docs.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
LogLevel debug
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
Теперь прокси-сервер удален, и я хочу выставить Ubuntu Server напрямую для внешнего. Если я установил NAT в маршрутизаторе для направления трафика 80 и 443 на 192.168.1.30, то все работает нормально, но сертификат SSL недействителен.
Я попытался (пере) установить, согласно инструкции для NextCloud Snap, с
sudo nextcloud.enable-https lets-encrypt
Но я получаю 404, так как Let's Encrypt не может загрузить файл подтверждения на порт 80.
Как настроить новую конфигурацию без обратного прокси-сервера, но установить сертификат SSL для NextCloud Snap?