2

У меня есть ключ, сертификат и сертификат цепи. Домен выглядит как automation.mydomain.comКонфигурация NGINX для прокси-запросов SSL на сервер Sinatra

У меня есть сервер Sinatra, работающий на localhost:3000, подтвержденный с помощью curl localhost:3000/test.

Я хотел бы, чтобы перенаправить порт 80 и порт 443 трафика на 3000. Вот мой /etc/sites-enabled/sinatra конфигурации:

upstream app_aggregator { 
    server 127.0.0.1:3000; 
    keepalive 8; 
} 

# the nginx server instance 
server { 
    listen 0.0.0.0:80; 
    server_name automation.mydomain.com my_site; 
    access_log /var/log/nginx/aggregator.log; 

    # pass the request to the node.js server with the correct headers 
    # and much more can be added, see nginx config options 
    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-NginX-Proxy true; 

     proxy_pass http://app_aggregator/; 
     proxy_redirect off; 
    } 
} 

Примечание выше не работает (http://automation.mydomain.com/ приводит к ERR_NAME_NOT_RESOLVED). Я не уверен, как добавить ключ, нормальный сертификат и сертификат цепи в этот микс.

Я решил эту проблему в прошлом с конфигурацией node.js, которая с удовольствием использовала ключи, а SSL работал отлично, но я никогда не использовал nginx.

Стоит отметить, что я использую Amazon AWS и открываю только 80 и 443.

ответ

3

Что-то не так с настройкой DNS для вашего домена, трудно сказать вам, что случилось, не зная больше о вашей настройке, но, по крайней мере, убедитесь, что у вас правильно настроены серверы имен для вашего домена и A-запись указывая на ваш AWS-экземпляр.

Важно отметить, что при настройке HTTPS с Nginx ваш файл сертификата должен включать любые промежуточные сертификаты, которые у вас могут быть. Для получения дополнительной информации см. Ссылку на документацию Nginx.

Настройка SSL с Nginx может быть столь же просто, как добавить эти 3 строки в файл конфигурации:

listen 0.0.0.0:443 ssl; 
ssl_certificate /path/to/your/certificate 
ssl_certificate /path/to/your/certificate_key 

Если вы хотите, чтобы обеспечить соблюдение HTTPS можно отключить HTTP (порт 80) на существующем блоке сервера и создать дополнительный такой вот:

server { 
    listen 0.0.0.0:80; 
    server_name automation.mydomain.com my_site; 
    return 301 https://$server_name$request_uri; 
} 

Это перенаправит любой HTTP-запрос на ваш сервер с поддержкой HTTPS. Обратите внимание, что я бы советовал изменять 301-302 при тестировании, чтобы ваш браузер не кэшировал ответ.

Смотрите эти ресурсы для получения дополнительной информации

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