Развертывание Meteor на производстве с помощью Meteor-Up, SSL и NGINX
У меня возникают трудности при развертывании моего метеорного приложения («myApp» ниже) в производство, используя meteor-up с https и NGINX в качестве прокси. В частности, я думаю, что у меня проблемы с настройкой правильных портов и / или путей.
Развертывание сработало во многих отношениях. Он работает на цифровой океанской капле с базой данных mongohq (теперь compose.io). мойmup setup
, mup reconfig
(запустить сейчас много раз на моем файле mup.json) иmup deploy
Команды с метеорологией все сообщают об ошибках. Если я зайду в свою среду убунту на цифровом океане иstatus myApp
это сообщаетmyApp start/running, process 10049
и когда я проверяю свою базу данных mongohq, я вижу, что ожидаемые коллекции для myApp были созданы и посеяны. Исходя из этого, я думаю, что приложение работает правильно.
Моя проблема в том, что я не могу найти его при посещении сайта и, не имея опыта работы с серверами NGINX, я не могу сказать, делаю ли я что-то очень простое и неправильное в настройке портов и переадресации.
Я воспроизвел соответствующие части моего файла конфигурации NGINX и файла mup.json ниже.
Поведение яожидаемый с настройкой ниже, если мое приложение meteor прослушивает порт 3000 в mup.json, приложение должно появиться при посещении сайта. На самом деле, если я установлю в mup.json env.PORT значение 3000, при посещении сайта мой браузер сообщит мне, что существует цикл перенаправления. Если я изменю env.PORT от mup на 80 или оставлю env.PORT полностью, я получу502 Bad Gateway
сообщение - эту часть следует ожидать, потому что myApp должен прослушивать localhost: 3000, и я не ожидал бы найти что-нибудь еще.
Вся помощь очень ценится.
MUP.JSON (в соответствующей части, lmk, если нужно показать больше)"env": {
"PORT": 3000,
"NODE_ENV": "production",
"ROOT_URL": "http://myApp.com",
"MONGO_URL": // working ok, not reproduced here,
"MONGO_OPLOG_URL": // working ok I think,
"MAIL_URL": // working ok
}
NGINXserver_tokens off;
# according to a digital ocean guide i followed here, https://www.digitalocean.com/community/tutorials/how-to-deploy-a-meteor-js-application-on-ubuntu-14-04-with-nginx, this section is needed to proxy web-socket connections
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# HTTP
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name myApp.com;
# redirect non-SSL to SSL
location / {
rewrite ^ https://$server_name$request_uri? permanent;
}
}
# HTTPS
server {
listen 443 ssl spdy;
# this domain must match Common Name (CN) in the SSL certificate
server_name myApp.com;
root html;
index index.html index.htm;
ssl_certificate /etc/nginx/ssl/tempcert.crt;
ssl_certificate_key /etc/nginx/ssl/tempcert.key;
ssl_stapling on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'long string I didn't reproduce here'
add_header Strict-Transport-Security "max-age=31536000;";
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Также обратите внимание, что сертификаты SSL настроены и работают нормально, так что я думаю, что это что-то с настройкой портов, путей и переадресации. Я не знаю, откуда идет цикл перенаправления.