J'utilise Dokku pour héberger mon application chez DigitalOcean. Dokku exécuter nginx 1.6 pour proxyer des applications Docker simulant un environnement de type Heroku. Les applications partagent toutes des configurations par défaut similaires, comme ci-dessous.
Mon serveur Node.js utilise intergiciel CORS pour indiquer au navigateur d'autoriser www.myapp.com à faire des appels à api.myapp.com :
Cela fonctionne bien sur mon ordinateur local. Lorsque je le déploie, j'obtiens une erreur CORS dans le navigateur :
XMLHttpRequest cannot load https://api.myapp.com/r_u_up. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.myapp.com' is therefore not allowed access. The response had HTTP status code 502.
Donc, WTF, terminé.
J'ai trouvé ceci nginx CORS config mais ça semble très cruciforme. S'agit-il d'un vieux code ou de la meilleure méthode ? Ce site utilise cette configuration.
Je préférerais une configuration plus simple qui ne fait que transmettre les en-têtes de réponse. Mon application n'a pas besoin de nginx pour les intercepter. Comment puis-je configurer cela ?
App nginx.conf's :
upstream www { server 172.17.0.135:5000; }
server {
listen [::]:80;
listen 80;
server_name www.myapp.com ;
return 301 https://www.myapp.com$request_uri;
}
server {
listen [::]:443 ssl spdy;
listen 443 ssl spdy;
server_name www.myapp.com;
keepalive_timeout 70;
add_header Alternate-Protocol 443:npn-spdy/2;
location / {
proxy_pass http://www;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Request-Start $msec;
}
include /home/dokku/www/nginx.conf.d/*.conf;
}
0 votes
C'est intéressant : singes.chaordic.com.br/opération/secure-cors-nginx