Markdown JS con due protocolli

Versione: 2.7.0.beta1
Installazione: discourse-docker

Ciao a tutti,

non so come descrivere meglio la situazione, ma il bundle JS di markdown-it nella nostra installazione di Discourse non funziona correttamente. In qualche modo viene aggiunto un protocollo “https” aggiuntivo all’URL del JavaScript (servito tramite CDN e salvato nel nostro bucket S3).

Ho aggiunto uno screenshot.
image

Tutte le altre risorse funzionano correttamente.

È solo questo, e a causa di ciò non otteniamo la funzione di anteprima :frowning:

Grazie per il vostro tempo, non vedo l’ora di ricevere un riscontro :slight_smile:

Screenshot delle altre risorse funzionanti:

Puoi condividere qui il tuo file app.yml?

sì, certo.

## Gestito da Ansible. Non modificare sul server
## questo è il modello del container Docker Discourse all-in-one, autonomo
##
## Dopo aver apportato modifiche a questo file, DEVI ricostruire
## /var/discourse/launcher rebuild app
##
## FAI *MOLTA* ATTENZIONE DURANTE LA MODIFICA!
## I FILE YAML SONO SUPER SUPER SENSIBILI A ERRORI NELLO SPAZIATURA O NELL'ALLINEAMENTO!
## visita http://www.yamllint.com/ per convalidare questo file se necessario

templates:
  #- "templates/postgres.template.yml"
  #- "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Scommenta queste due righe se desideri aggiungere Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## quali porte TCP/IP deve esporre questo container?
## Se desideri che Discourse condivida una porta con un altro server web come Apache o nginx,
## consulta https://meta.discourse.org/t/17247 per i dettagli
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Imposta db_shared_buffers al massimo al 25% della memoria totale.
  ## verrà impostato automaticamente da bootstrap in base alla RAM rilevata, oppure puoi sovrascriverlo
  db_shared_buffers: '16GB'

  ## può migliorare le prestazioni di ordinamento, ma aumenta l'utilizzo della memoria per connessione
  #db_work_mem: "40MB"

  ## Quale revisione Git deve utilizzare questo container? (predefinito: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Quante richieste web simultanee sono supportate? Dipende dalla memoria e dai core della CPU.
  ## verrà impostato automaticamente da bootstrap in base alle CPU rilevate, oppure puoi sovrascriverlo
  UNICORN_WORKERS: 8

  ## TODO: Il nome di dominio a cui risponderà questa istanza di Discourse
  ## Obbligatorio. Discourse non funzionerà con un semplice numero IP.
  DISCOURSE_HOSTNAME: 'community-dev.stackit.cloud'

  ## Scommenta se desideri che il container venga avviato con lo stesso
  ## nome host (opzione -h) specificato sopra (predefinito "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Elenco di email separate da virgola che diventeranno amministratori e sviluppatori
  ## all'iscrizione iniziale, esempio 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'xxx'

  ## TODO: Il server SMTP utilizzato per validare nuovi account e inviare notifiche
  ## INDIRIZZO SMTP, nome utente e password sono obbligatori
  ## ATTENZIONE: il carattere '#' nella password SMTP può causare problemi!
  DISCOURSE_SMTP_ADDRESS: '1.2.3.4'
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: 'xx@xx.de'
  DISCOURSE_SMTP_PASSWORD: 'xxx'
  DISCOURSE_SMTP_ENABLE_START_TLS: true
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

  ## Se hai aggiunto il modello Lets Encrypt, scommenta qui sotto per ottenere un certificato SSL gratuito
  #LETSENCRYPT_ACCOUNT_EMAIL: info@ediri.de

  ## L'indirizzo CDN http o https per questa istanza di Discourse (configurato per il recupero)
  ## consulta https://meta.discourse.org/t/14857 per i dettagli
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  #DISCOURSE_CDN_URL: community-cdn.change.me

  ## La chiave IP di geolocalizzazione maxmind per la ricerca degli indirizzi IP
  ## consulta https://meta.discourse.org/t/-/137387/23 per i dettagli
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

  DISCOURSE_DB_POOL: 16
  DISCOURSE_DB_USERNAME: 'discourse'
  DISCOURSE_DB_PASSWORD: 'yyy'
  DISCOURSE_DB_HOST: 1.2.3.4
  DISCOURSE_DB_NAME: 'discourse'
  DISCOURSE_DB_PORT: 5432

  DISCOURSE_REDIS_HOST: 'y.de'
  DISCOURSE_REDIS_PASSWORD: 'xxx'
  DISCOURSE_REDIS_PORT: 49456

  DISCOURSE_MESSAGE_BUS_REDIS_ENABLED: true
  DISCOURSE_MESSAGE_BUS_REDIS_HOST: 'y.de'
  DISCOURSE_MESSAGE_BUS_REDIS_PORT: 49456
  DISCOURSE_MESSAGE_BUS_REDIS_PASSWORD: 'xxx'

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: whatever
  DISCOURSE_S3_ENDPOINT: https://assets.xxx
  DISCOURSE_S3_ACCESS_KEY_ID: 'discourse-dev'
  DISCOURSE_S3_SECRET_ACCESS_KEY: 'xxx'
  DISCOURSE_S3_CDN_URL: https://discourse-dev.assets.xxx
  DISCOURSE_S3_BUCKET: 'discourse-dev'
  DISCOURSE_S3_BACKUP_BUCKET: 'discourse-dev/backups'
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_INSTALL_CORS_RULE: false

## Il container Docker è senza stato; tutti i dati sono archiviati in /shared
volumes:
  - volume:
  host: /var/discourse/shared/standalone
  guest: /shared
  - volume:
  host: /var/discourse/shared/standalone/log/var-log
  guest: /var/log

## I plugin vanno qui
## consulta https://meta.discourse.org/t/19157 per i dettagli
hooks:
  after_code:
- exec:
    cd: $home/plugins
    cmd:
      - git clone https://github.com/discourse/docker_manager.git
      - git clone https://github.com/discourse/discourse-cakeday.git
      - git clone https://github.com/discourse/discourse-oauth2-basic.git
      #- git clone https://github.com/discourse/discourse-bbcode.git

  after_assets_precompile:
- exec:
    cd: $home
    cmd:
      - sudo -E -u discourse bundle exec rake s3:upload_assets

## Qualsiasi comando personalizzato da eseguire dopo la compilazione
run:
  - exec: echo "Inizio dei comandi personalizzati"
  ## Se desideri impostare l'indirizzo email 'Da' per la tua prima registrazione, scommenta e modifica:
  ## Dopo aver ricevuto la prima email di iscrizione, riscommenta la riga. Deve essere eseguita solo una volta.
  - exec: rails r "SiteSetting.notification_email='xxx@xxx.de'"
  - exec: echo "Fine dei comandi personalizzati"

Stai utilizzando un reverse proxy? Hai impostato force_https nelle impostazioni?

Sì, force_https è impostato. E no, non c’è reverse proxy oltre a nginx integrato.

La cosa strana è che gli altri JS funzionano perfettamente con l’URL del CDN. È solo markdown-it che dà problemi…

Non so dove guardare nel codice, tanto più che non conosco Ruby. :slight_smile: :grinning:

1 Mi Piace

Ci sono ulteriori informazioni di cui avresti bisogno per indicarmi una soluzione? Dovrei forse controllare il codice?

ciao, qualcuno ha un’idea su come risolvere questo?

1 Mi Piace

C’è qualcosa di strano nella tua configurazione.

Hai configurato un CDN S3, ma è sullo stesso URL del bucket?

data-s3-cdn="https://discourse-dev.assets.schwarz" 
data-s3-base-url="//discourse-dev.assets.schwarz"

Confrontando con Meta:

data-s3-cdn="https://d11a6trkgmumsb.cloudfront.net" 
data-s3-base-url="//assets-meta-cdck-prod-meta.s3.dualstack.us-west-1.amazonaws.com"

Il codice che carica gli script dinamici proverà a sostituire S3_BASE_URL con S3_CDN:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse-common/addon/lib/get-url.js#L35-L37

1 Mi Piace

Sì, entrambe le URL sono identiche, poiché utilizziamo Minio come storage oggetti compatibile con S3.

@Falco, avevi ragione. Separare entrambi gli URL ha contribuito a risolvere il problema :slight_smile:

Grazie per l’aiuto :slight_smile:

1 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.