2016-07-17 2 views
0

Я запускаю приложение node/express на экземпляре amazon ec2, без балансировки нагрузки, свободный уровень. Я пытаюсь перенаправить все на HTTPS. Все, что я делал до сих пор, было через EB CLI (eb deploy, eb ssh и т. Д.).Перенаправление экземпляра amazon ec2 nodejs в HTTPS

У меня есть бесплатный сертификат от letencrypt (certbot), и я настроил nginx.conf, как описано в этом tutorial. Я могу получить доступ к http и https-версиям URL-адреса приложения. Http получает мое приложение nodejs, но https возвращает страницу nginx по умолчанию по умолчанию (из/usr/share/nginx/html).

Я хотел бы получить приложение nodejs только на HTTPS и перенаправить все HTTP-запросы на HTTPS.

Мой nginx.conf выглядит следующим образом:

# Elastic Beanstalk managed configuration file 
# Some configuration of nginx can be by placing files in /etc/nginx/conf.d 
# using Configuration Files. 
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/customize-containers.html 
# 
# Modifications of nginx.conf can be performed using container_commands to modify the staged version 
# located in /tmp/deployment/config/etc#nginx#nginx.conf 

# Elastic_Beanstalk 
# For more information on configuration, see: 
# * Official English Documentation: http://nginx.org/en/docs/ 
# * Official Russian Documentation: http://nginx.org/ru/docs/ 

user nginx; 
worker_processes auto; 

error_log /var/log/nginx/error.log; 

pid  /var/run/nginx.pid; 


events { 
    worker_connections 1024; 
} 

http { 

    port_in_redirect off; 
    include  /etc/nginx/mime.types; 

    default_type application/octet-stream; 

    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
         '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"'; 

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

    sendfile  on; 

    keepalive_timeout 65; 
# Elastic Beanstalk Modification(EB_INCLUDE) 

    log_format healthd '$msec"$uri"' 
         '$status"$request_time"$upstream_response_time"' 
         '$http_x_forwarded_for'; 
    server { 
    listen 80; 
    server_name localhost; 
    location/{ 
     # Redirect any http requests to https 
     if ($http_x_forwarded_proto != 'https') { 
     rewrite^https://$host$request_uri? permanent; 
     } 
    } 
    } 

    server { 
     listen  443 ssl; 
     listen  [::]:443 ssl; 
     server_name localhost; 

     ssl_certificate "/etc/letsencrypt/live/domain/fullchain.pem"; 
     ssl_certificate_key "/etc/letsencrypt/live/domain/privkey.pem"; 
     # It is *strongly* recommended to generate unique DH parameters 
     # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 
     #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; 
     ssl_session_cache shared:SSL:1m; 
     ssl_session_timeout 10m; 
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
     ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP; 
     ssl_prefer_server_ciphers on; 

     # Load configuration files for the default server block. 
     include /etc/nginx/default.d/*.conf; 

     error_page 404 /404.html; 
      location = /40x.html { 
     } 

     error_page 500 502 503 504 /50x.html; 
      location = /50x.html { 
     } 
    } 


include /etc/nginx/conf.d/*.conf; 
# End Modification 

} 

ответ

0

перенаправлять порты, вы можете добавить IPTables маршрутизации в вашем экземпляре EC2, например:

Судо Iptables -t физ - A PREROUTING -p TCP --dport 80 -j REDIRECT --to-порты 443

* Убедитесь, что в EC2 группы безопасности, входящий HTTP порт 80 источника = "Anywhere".

Для просмотра IPTables маршрутизации записей, выполните команду:

Судо Iptables -t нац -L

Если необходимо удалить запись маршрутизации (первая линия), запустите:

sudo iptables -t nat -D PREROUTING 1

Смежные вопросы