You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Once the basic installation has been completed and seeing that it works locally with the IP address of the server, I have changed to a url that reaches the server from a reverse proxy https://mysite.es. But when you click on an image of a dataset, the image has to appear in a large size where a download icon appears that has to work, as happens with local installation.
Actual Behavior
However, when installing with a URL that comes from a reverse proxy https://misitio.es and clicking on an image of a dataset, a runtime error and http 400 are returned.
Install postgres and docker compose on ubuntu 22.04
Install the latest version of Geonode 4.4.1 which can be downloaded from https://geonode.org/ with docker compose (docker compose build and docker compose up -d) using the * file .env* that has been generated by running create-envfile.py with the url https://mysite.es that comes from a reverse proxy associated with port 80.
Publish some layer to geoserver and perform manage.py updatelayers so that they also appear in geonode. Once they appear in geonode, simply clicking on the image gives the runtime error and if you then click on the download icon it gives an error. In both cases, when checking the browser for inspect, 400 (Bad Request) appears.
#version: '3.9'
#Plantilla común de Django para los servicios GeoNode y Celery a continuación
x-common-django:
&default-common-django
image: geonode/geonode:4.4.1
build:
context: ./
dockerfile: Dockerfile
restart: less-stopped
env_file:
- .env
volumes:
- statics:/mnt/volumes/statics
- geoserver-data-dir:/geoserver_data/data
- backup-restore:/backup_restore
- data:/data
- tmp:/tmp
dependent_on:
db:
condition: service_healthy
servicios:
#Nuestra aplicación django personalizada. Incluye Geonode.
django:
<< : *default-common-django
nombre_del_contenedor: django4${COMPOSE_PROJECT_NAME}
comprobación de estado:
prueba: "curl -m 10 --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://django:8000/ "
periodo_de_inicio: 60 s
intervalo: 60 s
tiempo de espera: 10 s
reintentos: 2
entorno:
- IS_CELERY=False
punto de entrada: ["/usr/src/geonode/entrypoint.sh"]
comando: "uwsgi --ini /usr/src/geonode/uwsgi.ini"
#Trabajador de Celery que ejecuta tareas de Celery creadas por Django.
celery:
<< : *default-common-django
nombre_del_contenedor: celery4${COMPOSE_PROJECT_NAME}
depende_de:
django:
condición: service_healthy
entorno:
- IS_CELERY=True
punto de entrada: ["/usr/src/geonode/entrypoint.sh"]
comando: "celery-cmd"
#servicio
memcached memcached:
imagen: memcached:alpine
nombre_del_contenedor: memcached4${COMPOSE_PROJECT_NAME}
comando: memcached ${MEMCACHED_OPTIONS}
reinicio: en caso de falla
comprobación de estado:
prueba: nc -z 127.0.0.1 11211
intervalo: 30 s
tiempo de espera: 30 s
reintentos: 5
período_de_inicio: 30 s
#Nginx está sirviendo archivos estáticos y multimedia de Django y servidores proxy a Django y Geonode
geonode:
imagen: geonode/nginx:1.25.3-latest
nombre_contenedor: nginx4${COMPOSE_PROJECT_NAME}
archivo_env:
- .env
entorno:
- RESOLVER=127.0.0.11
puertos:
- "${HTTP_PORT}:80"
- "${HTTPS_PORT}:443"
volúmenes:
- nginx-confd:/etc/nginx
- nginx-certificates:/geonode-certificates
- statics:/mnt/volumes/statics
reinicio: a menos que se detenga
#Obtiene e instala certificados letsencrypt
letsencrypt:
imagen: geonode/letsencrypt:2.6.0-latest
nombre_contenedor: letsencrypt4${COMPOSE_PROJECT_NAME}
archivo_env:
- .env
volúmenes:
- nginx-certificates:/geonode-certificates
reiniciar: a menos que se detenga
#Geoserver backend
geoserver:
imagen: geonode/geoserver:2.24.3-latest
nombre_contenedor: geoserver4${COMPOSE_PROJECT_NAME}
comprobación de estado:
prueba: "curl -m 10 --fail --silent --write-out 'CÓDIGO HTTP: %{http_code}\n' --output /dev/null http://geoserver:8080/geoserver/ows "
periodo_inicio: 60s
intervalo: 60s
tiempo_espera: 10s
reintentos: 2
archivo_env:
- .env
puertos:
- "8080:8080"
volúmenes:
- statics:/mnt/volumes/statics
- geoserver-data-dir:/geoserver_data/data
- backup-restore:/backup_restore
- data:/data
- tmp:/tmp
reiniciar: a menos que se detenga
depende_de:
data-dir-conf:
condición: servicio_saludable
django:
condición: servicio_saludable
data-dir-conf:
imagen: geonode/geoserver_data:2.24.3-latest
nombre_contenedor: gsconf4${COMPOSE_PROJECT_NAME}
punto de entrada: sleep infinity
volúmenes:
- geoserver-data-dir:/geoserver_data/data
reiniciar: a menos que se detenga
control de estado:
prueba: "ls -A '/geoserver_data/data' | wc -l"
Base de datos PostGIS.
db:
#use geonode official postgis 15 image
imagen: geonode/postgis:15.3-latest
comando: postgres -c "max_connections=${POSTGRESQL_MAX_CONNECTIONS}"
nombre_contenedor: db4${COMPOSE_PROJECT_NAME}
archivo_env:
- .env
volúmenes:
- dbdata:/var/lib/postgresql/data
- dbbackups:/pg_backups
reinicio: a menos que se detenga
comprobación de estado:
prueba: "pg_isready -d postgres -U postgres"
#elimine el comentario para habilitar conexiones remotas a postgres
#puertos:
#- "5432:5432"
Servicio #Vanilla RabbitMQ. Esto es necesario para celery
rabbitmq:
imagen: rabbitmq:3-alpine
nombre_del_contenedor: rabbitmq4${COMPOSE_PROJECT_NAME}
volúmenes:
- rabbitmq:/var/lib/rabbitmq
reinicio: a menos que se detenga
volúmenes:
statics:
nombre: ${COMPOSE_PROJECT_NAME}-statics
nginx-confd:
nombre: ${COMPOSE_PROJECT_NAME}-nginxconfd
nginx-certificates:
nombre: ${COMPOSE_PROJECT_NAME}-nginxcerts
geoserver-data-dir:
nombre: ${COMPOSE_PROJECT_NAME}-gsdatadir
dbdata:
nombre: ${COMPOSE_PROJECT_NAME}-dbdata
dbbackups:
nombre: ${COMPOSE_PROJECT_NAME}-dbbackups
backup-restore:
nombre: ${COMPOSE_PROJECT_NAME}-backup-restore
datos:
nombre: ${COMPOSE_PROJECT_NAME}-data
tmp:
nombre: ${COMPOSE_PROJECT_NAME}-tmp
rabbitmq:
nombre: ${COMPOSE_PROJECT_NAME}-rabbitmq
.env file
COMPOSE_PROJECT_NAME=geonode
#Ver [contenedores/podman#13889](https://github.com/containers/podman/issues/13889)
#DOCKER_BUILDKIT=0
DOCKER_ENV=production
#Ver [geosolutions-it/geonode-generic#28](https://github.com/geosolutions-it/geonode-generic/issues/28)
#para ver por qué forzamos la versión de API a 1.24
DOCKER_API_VERSION="1.24"
BACKUPS_VOLUME_DRIVER=local
C_FORCE_ROOT=1
FORCE_REINIT=falso
INVOKE_LOG_STDOUT=verdadero
#CÓDIGO_DE_IDIOMA=it-it #IDIOMAS=
(('en-us','Inglés'),('it-it','Italiano'))
MÓDULO_DE_CONFIGURACIÓN_DJANGO=geonode.configuraciones
NOMBRE_DE_INSTANCIA_GEONODE=geonode
##################
#backend
###################
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres1
GEONODE_DATABASE=geonodo
GEONODE_DATABASE_USER=geonodo
GEONODE_DATABASE_PASSWORD=geonodo1
GEONODE_GEODATABASE= geonodo_datos GEONODE_GEODATABASE_USER=geonodo_datos
GEONODE_GEODATABASE_PASSWORD=geonodo_datos1
GEONODE_DATABASE_SCHEMA=público
GEONODE_GEODATABASE_SCHEMA=público
DATABASE_HOST=db
DATABASE_PORT=5432
DATABASE_URL=postgis://geonodo:geonodo1@db:5432/geonodo
GEODATABASE_URL=postgis://datos_de_geonodos:datos_de_geonodos1@db:5432/datos_de_geonodos
GEONODE_DB_CONN_MAX_AGE=0
GEONODE_DB_CONN_TOUT=5
DEFAULT_BACKEND_DATASTORE=almacén_de_datos
BROKER_URL=amqp://invitado:invitado@rabbitmq:5672/
CELERY_BEAT_SCHEDULER=celery.beat:PersistentScheduler
ASYNC_SIGNALS=Verdadero
URL DEL SITIO= https://misitio.es/
ALLOWED_HOSTS="['django', 'misitio.es']"
#Cargador de datos
DEFAULT_BACKEND_UPLOADER=geonode.importer
TIME_ENABLED=Verdadero
MOSAIC_ENABLED=Falso
###################
#nginx
#Servidor HTTPD
##################
GEONODE_LB_HOST_IP=django
GEONODE_LB_PORT=8000
NGINX_BASE_URL= https://misitio.es/
#IP o nombre de dominio y puerto donde se puede acceder al servidor en HTTPS (deje HOST vacío si desea utilizar solo HTTP)
#puerto donde se puede acceder al servidor en HTTPS
HTTP_HOST=misitio.es
HTTPS_HOST=
PUERTO HTTP=80
PUERTO HTTPS=443
#Certificados Let's Encrypt para cifrado https. Debe tener un nombre de dominio como HTTPS_HOST (no funciona
#con una ip) y debe ser accesible desde el exterior. Puede ser uno de los siguientes:
#disabled: no obtenemos ningún certificado (se utilizará un certificado de marcador de posición)
#staging: obtenemos certificados de staging (no son válidos, pero permiten probar el proceso por completo y tienen tasas de límite mucho más altas)
#production: obtenemos un certificado normal (predeterminado)
LETSENCRYPT_MODE=disabled
#LETSENCRYPT_MODE=staging
#LETSENCRYPT_MODE=production
RESOLUTOR=127.0.0.11
##################
#geoserver
##################
IP_HOST_GEOSERVER_LB=geoserver
PUERTO_LB_GEOSERVER_LB=8080
UBICACIÓN_UI_WEB_GEOSERVER= https://misitio.es/geoserver/
UBICACIÓN_PÚBLICA_GEOSERVER= https://misitio.es/geoserver/
UBICACIÓN_GEOSERVER=http://${IP_HOST_GEOSERVER_LB}:${PUERTO_LB_GEOSERVER}/geoserver/
USUARIO_ADMIN_GEOSERVER=admin
CONTRASEÑA_ADMIN_GEOSERVER=admin1
TIEMPO DE ESPERA DE SOLICITUD DE OGC=30 MÁXIMO DE RETIROS DE
SOLICITUD DE OGC=1
FACTOR DE RETROCESO DE SOLICITUD DE OGC=0.3
TAMAÑO MÁXIMO DE GRUPO DE SOLICITUDES DE OGC=10
CONEXIONES DE GRUPO DE SOLICITUDES DE OGC=10
Opciones y memoria de Java
ENABLE_JSONP=true
outFormat=text/javascript
GEOSERVER_JAVA_OPTS=-Djava.awt.headless=true -Xms4G -Xmx4G -Dgwc.context.suffix=gwc -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=/var/log/jvm.log -XX:PerfDataSamplingInterval=500 -XX:SoftRefLRUPolicyMSPerMB=36000 -XX:-UseGCOverheadLimit -XX:ParallelGCThreads=4 -Dfile.encoding=UTF8 -Djavax.servlet.request.encoding=UTF-8 -Djavax.servlet.response.encoding=UTF-8 -Duser.timezone=GMT -Dorg.geotools.shapefile.datetime=false -DGS-SHAPEFILE-CHARSET=UTF-8 -DGEOSERVER_CSRF_DISABLED=true -DPRINT_BASE_URL= https://misitio.es/geoserver/pdf -DALLOW_ENV_PARAMETRIZATION=true -Xbootclasspath/a:/usr/local/tomcat/webapps/geoserver/WEB-INF/lib/marlin-0.9.3-Unsafe.jar -Dsun.java2d.renderer=org.marlin.pisces.MarlinRenderingEngine
###################
#Seguridad
###################
#Configuración de administrador
#ADMIN_PASSWORD se utiliza para sobrescribir la contraseña de administrador de GeoNode SOLAMENTE la primera vez
que se ejecuta GeoNode. Si necesita sobrescribirla nuevamente, debe configurar la variable de entorno FORCE_REINIT;
de lo contrario, se omitirá la tarea de invocación de updateadmin y
se respetará la contraseña actual ya almacenada en la base de datos.
USUARIO_ADMIN=admin [CONTRASEÑA_ADMIN](mailto:[email protected])
=admin1
CORREO_ELECTRÓ[email protected]
#Notificaciones de EMAIL
EMAIL_ENABLE=Falso
DJANGO_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
DJANGO_EMAIL_HOST=localhost
DJANGO_EMAIL_PORT=25
DJANGO_EMAIL_HOST_USER=
DJANGO_EMAIL_HOST_PASSWORD=
DJANGO_EMAIL_USE_TLS=Falso
DJANGO_EMAIL_USE_SSL=Falso
DEFAULT_FROM_EMAIL=' [[email protected]](mailto:[email protected]) ' # p. ej. Empresa [[email protected]](mailto:[email protected])
#Sesión/Control de acceso
LOCKDOWN_GEONODE=Falso
X_FRAME_OPTIONS="MISMOORIGIN"
CONTROL_EXPIRO_SESIÓN_HABILITADO=Verdadero
PERMISO_DE_VISUALIZACIÓN_ANÓNIMA_PREDETERMINADO=Falso
PERMISO_DE_DESCARGA_ANÓNIMA_PREDETERMINADO=Falso
CORS_ALLOW_ALL_ORIGINS=Verdadero
GEOSERVER_CORS_ENABLED=Verdadero
GEOSERVER_CORS_ALLOWED_ORIGINS=*
GEOSERVER_CORS_ALLOWED_METHODS=OBTENER, PUBLICAR, PONER, ELIMINAR, ENCABEZADO, OPCIONES
GEOSERVER_CORS_ALLOWED_HEADERS=*
#Registro de usuarios
ACCOUNT_OPEN_SIGNUP=Falso
ACCOUNT_EMAIL_REQUIRED=Verdadero
ACCOUNT_APPROVAL_REQUIRED=Falso
ACCOUNT_CONFIRM_EMAIL_ON_GET=Falso
ACCOUNT_EMAIL_VERIFICATION=ninguno
ACCOUNT_EMAIL_CONFIRMATION_EMAIL =Falso ACCOUNT_EMAIL_CONFIRMATION_REQUIRED
=Falso
ACCOUNT_AUTHENTICATION_METHOD=nombre_usuario_correo_electrónico
AUTO_ASSIGN_REGISTERED_MEMBERS_TO_REGISTERED_MEMBERS_GROUP_NAME=Verdadero
AUTO_ASSIGN_REGISTERED_MEMBERS_TO_CONTRIBUTORS=Verdadero
#OAuth2
CLAVE_API_OAUTH2=
ID_CLIENTE_OAUTH2=xxxxxxxxxxxxx
SECRETO_CLIENTE_OAUTH2=aaaaaaaaaaaaaa
#API de GeoNode
API_LOCKDOWN=Falso
TASTYPIE_APIKEY=
###################
#Producción y
#Monitoreo
###################
DEBUG=False
SECRET_KEY='zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'
RAÍZ_ESTÁTICA=/mnt/volumes/statics/static/
RAÍZ_MEDIO=/mnt/volumes/statics/uploaded/
RAÍZ_ACTIVOS=/mnt/volumes/statics/activos/
RUTA_GEOIP=/mnt/volumes/statics/geoip.db
CACHE_BUSTING_STATIC_ENABLED=Falso
MEMCACHED_ENABLED=Falso
MEMCACHED_BACKEND=django.core.cache.backends.memcached.PyLibMCCache
MEMCACHED_LOCATION=memcached:11211
MEMCACHED_LOCK_EXPIRE=3600
MEMCACHED_LOCK_TIMEOUT=10
#Opciones para binarios memcached, por ejemplo -vvv para registrar todas las solicitudes y accesos a caché
OPCIONES_MEMCACHED=
TAMAÑO MÁXIMO DE DOCUMENTO=200 LÍMITE
DE RESULTADOS DEL CLIENTE=5
LÍMITE DE API POR PÁGINA=1000
#BIBLIOTECA DE VISTA PREVIA DE CAPAS DE CLIENTES
GEONODE=mapstore TOKEN
DE ACCESO DE MAPBOX=
CLAVE DE API DE BING= CLAVE DE API DE
GOOGLE=
#Monitoreo
MONITORING_ENABLED=Falso
MONITORING_DATA_TTL=365
USER_ANALYTICS_ENABLED=Verdadero
USER_ANALYTICS_GZIP=Verdadero
CENTRALIZED_DASHBOARD_ENABLED=Falso
NOMBRE_DE_SERVICIO_DE_MONITOREO=geonode-local
NOMBRE_DE_HOST_DE_MONITOREO=geonode
#Otras opciones/contribuciones
MODIFY_TOPICCATEGORY=Verdadero
AVATAR_GRAVATAR_SSL=Verdadero
EXIF_ENABLED=Verdadero
CREATE_LAYER=Verdadero
FAVORITE_ENABLED=Verdadero
#Flujo de trabajo avanzado
RESOURCE_PUBLISHING=Falso
ADMIN_MODERATE_UPLOADS=Falso
#LDAP
LDAP_ENABLED=Falso
LDAP_SERVER_URL=ldap://<el_servidor_ldap>
LDAP_BIND_DN=uid=ldapinfo,cn=usuarios,dc=ad,dc=ejemplo,dc=org
LDAP_BIND_PASSWORD=<algo_secreto>
LDAP_USER_SEARCH_DN=dc=ad,dc=ejemplo,dc=org
LDAP_USER_SEARCH_FILTERSTR=(&(uid=%(usuario)s)(objectClass=persona))
LDAP_GROUP_SEARCH_DN=cn=grupos,dc=ad,dc=ejemplo,dc=org
LDAP_GROUP_SEARCH_FILTERSTR=(|(cn=abt1)(cn=abt2)(cn=abt3)(cn=abt4)(cn=abt5)(cn=abt6))
LDAP_GROUP_PROFILE_MEMBER_ATTR=miembro único
#APIO
#expresado en KB
#CELERY__MAX_MEMORY_PER_CHILD="200000"
#Nota: el valor de escala automática correcto debe coincidir con el valor de concurrencia del trabajador
#CELERY__AUTOSCALE_VALUES="15,10"
#CELERY__WORKER_CONCURRENCY="10"
#CELERY__OPTS="--sin-cotillear --sin-conversar -Ofair -B -E"
#CELERY__BEAT_SCHEDULE="/mnt/volumes/statics/celerybeat-schedule"
#CELERY__LOG_LEVEL="INFO"
#CELERY__LOG_FILE="/var/log/celery.log"
#CELERY__WORKER_NAME="trabajador1@%h"
#PostgreSQL
POSTGRESQL_MAX_CONEXIONES=200
#Política de reinicio de contenedores comunes
RESTART_POLICY_CONDITION="en caso de error"
RESTART_POLICY_DELAY="5 s"
RESTART_POLICY_MAX_ATTEMPTS="3"
RESTART_POLICY_WINDOW=120 s
TAMAÑO MÁXIMO DE CARGA PREDETERMINADO=5368709120 CARGAS PARALELAS
MÁXIMAS PREDETERMINADAS POR USUARIO=5
#FORCE_READ_ONLY_MODE=False Anula el valor de solo lectura guardado en la configuración
Please if you can help me solve this problem, does it have to do with /datasets/ or something about the reverse proxy that is affecting it?
The text was updated successfully, but these errors were encountered:
JavierGeonode
changed the title
Instalación de Geonode version 4.4.1 con Docker Compose bajo un proxy inverso da errores http 400
Installing Geonode version 4.4.1 with Docker Compose under a reverse proxy gives http 400 errors
Dec 11, 2024
Expected Behavior
Once the basic installation has been completed and seeing that it works locally with the IP address of the server, I have changed to a url that reaches the server from a reverse proxy https://mysite.es. But when you click on an image of a dataset, the image has to appear in a large size where a download icon appears that has to work, as happens with local installation.
Actual Behavior
However, when installing with a URL that comes from a reverse proxy https://misitio.es and clicking on an image of a dataset, a runtime error and http 400 are returned.
Evidence of the Geonode error.docx
Steps to Reproduce the Problem
Specifications
GeoNode versión 4.4.1
Django 4.2.9
Geoserver 2.24.4
MapStore 2024.02.00
PostgreSQL >=12
Installation method (docker compose):
Platform: Linux Ubuntu 22.04
Additional details:
✔ Container rabbitmq4geonode Running 0.0s
✔ Container memcached4geonode Running 0.0s
✔ Container gsconf4geonode Healthy 1.0s
✔ Container nginx4geonode Running 0.0s
✔ Container db4geonode Healthy 0.5s
✔ Container django4geonode Healthy 1.0s
✔ Container geoserver4geonode Running 0.0s
✔ Container celery4geonode Running 0.0s
✔ Container letsencrypt4geonode Started 0.0s
docker-compose.yml file
.env file
Please if you can help me solve this problem, does it have to do with /datasets/ or something about the reverse proxy that is affecting it?
Evidence of the Geonode error.docx
The text was updated successfully, but these errors were encountered: