ssl и https в nginx с использованием метеора

У меня есть эта конфигурация nginx

server {
  listen 80;
  server_name app.com www.app.com;
  rewrite ^ https://$server_name$request_uri? permanent;
}

server {
  listen 443;
  server_name app.com www.app.com;

  ssl on;
  ssl_certificate /etc/nginx/ssl/app.crt;
  ssl_certificate_key /etc/nginx/ssl/server.key;

  location = /favicon.ico {
    root /opt/myapp/app/programs/web.browser/app;
    access_log off;
    expires 1w;
  }

  location ~* "^/[a-z0-9]{40}\.(css|js)$" {
    root /opt/myapp/app/programs/web.browser;
    access_log off;
    expires max;
  }

  location ~ "^/packages" {
    root /opt/myapp/app/programs/web.browser;
    access_log off;
  }

  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 Host $host;
  }
}

и развернут на ec2 с помощью mup с обычными настройками

Он развернут, и я могу получить доступ к сайту app.com

Но https://app.com не работает

т.к. в конфиге все запросы переписываются на https что тут происходит

  • Я могу получить доступ к сайту, когда ввожу app.com, что означает, что он перенаправляет объявление app.com https://app.com
  • Я не могу получить доступ к https://app.com, что означает, что nginx не работает

Какой из двух приведенных выше сценариев верен?

У меня нет вариантов. Я проверил с помощью программ проверки ssl, они показывают, что сертификат ssl не установлен.

тогда почему мое приложение работает при входе на app.com?


person user555    schedule 12.02.2015    source источник


Ответы (2)


Теперь Meteor Up имеет встроенную поддержку SSL. Нет больше тяжелой работы.

Просто добавьте сертификаты SSL и ключ и выполните mup setup.

Мы используем stud для терминации SSL.

person Arunoda Susiripala    schedule 18.02.2015

Я не разбираюсь в NGINX, но, глядя на мои рабочие конфигурации, я вижу ряд параметров, которые вы не включили в свои.

В частности, вам может понадобиться следующее вверху для проксирования соединений через веб-сокет:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

Мой сервер 443 также включает в себя следующее в дополнение к тому, что у вас уже есть:

server {
  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;
  add_header Strict-Transport-Security "max-age=31536000;";
  location / {
    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 http;
    proxy_set_header X-Nginx-Proxy true;
    proxy_redirect off;
  }
}

Наконец, я бы попробовал прокомментировать ваши директивы о местоположении для проверки ошибок. Проблема не должна быть связана с вашим SSL-сертификатом, он по-прежнему должен позволять вам посещать (с предупреждением) самозаверяющий или неправильно настроенный сертификат. Надеюсь это поможет.

person Jeremy S.    schedule 12.02.2015