2017-08-08 3 views
0

J'ai installé nginx sur un serveur à mon travail afin que nous puissions l'utiliser comme proxy inverse avec ssl sur nos applications. J'ai suivi quelques articles en ligne, créé un certificat auto-signé avec ceci:Scripts ne se charge pas après le reverse-proxy avec nginx et ssl

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/cert.key -out /etc/nginx/cert.crt 

Ainsi, après avoir fait les configurations dans/etc/nginx/sites disponibles et redémarrant nginx, je suis venu à un problème. 2 sur les 3 applications qui fonctionnent sous mon serveur semblent fonctionner correctement, le seul "problème" est que le certificat ne provient pas d'une autorité de certification, donc vous devez ajouter une exception, mais je suppose que tout va bien pour le moment . Ces 2 sont une application node.js et jenkins.

Maintenant, pour la troisième application, le problème est qu'il ne charge pas les scripts. Plus précisément, ils sont en cours d'exécution en chrome, opéra, firefox mais seulement quand je clique sur le petit écran sur la droite de l'URL pour permettre l'exécution de scripts dangereux, comme indiqué ci-dessous:

enter image description here

Maintenant, ce que je veux réaliser est de charger les scripts de tous les navigateurs sans avoir besoin de cliquer pour permettre aux scripts de s'exécuter. Comme avec l'application node.js où les scripts sont exécutés par défaut. Cette application est construite avec la combinaison de maven, jenkins, docker et backbone. Je ne faisais pas partie du développement donc je ne connais pas beaucoup de choses sur l'application. Je me demande donc si je dois modifier les configurations dans maven-docker-backbone afin que les scripts puissent s'exécuter par défaut, comme ils l'étaient lors de l'utilisation de http.

Voici le fichier de configuration pour le mandatement inverse pour mon application:

server { 
    listen 80; 
    return 301 https://$host$request_uri; 
} 

server { 

    listen 443; 
    server_name mysub.domain.com; 

    ssl_certificate   /etc/nginx/ssl/nginx.crt; 
    ssl_certificate_key  /etc/nginx/ssl/nginx.key; 

    ssl on; 
    ssl_session_cache builtin:1000 shared:SSL:10m; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; 
    ssl_prefer_server_ciphers on; 

    access_log   /var/log/nginx/myapp.access.log; 

    location/{ 

     proxy_set_header  Host $host; 
     proxy_set_header  X-Real-IP $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header  X-Forwarded-Proto $scheme; 

     # Fix the “It appears that your reverse proxy set up is broken" error. 
     proxy_pass   http://localhost:myport; 
     proxy_read_timeout 90; 

     proxy_redirect  http://localhost:myport https://mysub.domain.com; 
    } 
    } 

Et enfin, voici le fichier de configuration sans ssl qui exécute les scripts normalement:

server { 
    listen 80; 

    server_name mysub.domain.com; 

    location/{ 
     proxy_pass http://127.0.0.1:myport; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 

Désolé pour le long poster, merci d'avance pour tout conseil qui pourrait vous aider.

Répondre

0

Vous devez ouvrir CORS sur votre hôte API.

1

Dans mon cas, tout le contenu n'était pas servi sur https. Assurez-vous que tous les fichiers utilisent https et non http.

https_mixed_content_error