Я использую обратный прокси-сервер Ngnix, чтобы несколько служб докеров находились за HTTPS и в одном DNS.
В основном я хочу получить доступ к Nextcloud с помощью: https://server.<my-dns>.fr/cloud/
У меня есть доступ к странице инициализации, но все зависимости не загружаются (css, js, изображения ...), потому что базовый URL-адрес кажется неверным.
Например, мой браузер пытается загрузить https://server.<my-dns>.fr/core/js/dist/main.js
в то время как правильный https://server.<my-dns>.fr/cloud/core/js/dist/main.js
Другие мои службы работают, как ожидалось, но не этот.
events { }
http {
proxy_cache_path /tmp/cache keys_zone=one:10m;
# HTTP
server {
listen 80;
server_name server.<my-dns>.fr;
# For SSL cretificate validation
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
# Redirect everything to https
location / {
return 301 https://$host$request_uri;
}
}
# HTTPS
server {
listen 443 ssl;
server_name server.<my-dns>.fr;
# HTTPS configuration
ssl_certificate /etc/letsencrypt/live/server.<my-dns>.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/server.<my-dns>.fr/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# Auth configuration
auth_basic "Registry realm";
auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd;
location /glance/ {
proxy_pass http://localhost:61208/;
rewrite ^/glance(.*)$ $1 break;
}
# Other services ...
location /cloud/ {
auth_basic off;
proxy_pass http://localhost:8181/;
rewrite ^/cloud(.*)$ $1 break;
}
}
}
version: '3'
services:
nextcloud_db:
image: mariadb
container_name: nextcloud_db
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: unless-stopped
volumes:
- ./data/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=*****
- MYSQL_PASSWORD=*****
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
ports:
- 8181:80
links:
- nextcloud_db
volumes:
- ./data/nextcloud:/var/www/html
restart: unless-stopped
depends_on:
- nextcloud_db
Я понимаю, что Nginx не переписывает URL-адреса зависимостей, но как это решить?
Я попытался изменить настройки базового URL-адреса Nextcloud, но безуспешно. Я тоже пробовал это Nextcloud в подкаталоге nginx guide но я этого не очень понимаю.
Попробуй это:
location /cloud/ {
auth_basic off;
proxy_pass http://localhost:8181/;
rewrite ^/cloud(.*)$ $1 break;
sub_filter "/core/" "/cloud/core/";
sub_filter_once off;
}
Это заменяет все / core / к / облако / ядро / в ответ прокси пройти.
Это может решить вашу проблему, но я бы порекомендовал изменить базовый URL-адрес в nextcloud, см. Здесь: https://help.nextcloud.com/t/change-url-nextcloud/52415
С помощью Шахриар Шоджиб ответ, я решил это так:
...
location /cloud/ {
auth_basic off;
proxy_pass http://localhost:8181/cloud/;
rewrite ^/cloud(.*)$ $1 break;
}
...
'overwritehost' => 'server.<my-dns>.fr',
'overwritewebroot' => '/cloud'
Увидеть Документация Nextcloud.