У меня есть несколько серверов веб-приложений nodejs через HTTP, и мне нужно сертифицировать запросы, отправленные на эти серверы. Я думал об использовании nginx в качестве прокси для запросов, сертифицируя только сервер nginx с сертификатом SSL, чтобы данные / изображения, отправленные обратно клиенту, обслуживались через HTTPS.
Я думал об этой структуре:
+--- app1 ---> node.js on ip:10001
|
client --> https --> nginx --> http --- app2 ---> node.js on ip:10002
|
+--- app3 ---> node.js on ip:10003
Меня беспокоит объект ответа от проксированного запроса. Браузеры на основе Webkit и Safari предупреждают меня, что мое приложение работает по протоколу HTTPS, но обслуживает контент через HTTP (предупреждение о смешанном содержимом).
При сертификации прокси-сервера мой ответ клиенту будет подтвержден как HTTPS или как HTTP?
У моего прокси-сервера nginx будет сертифицированный поддомен, например proxy.domain.com, поэтому запросы будут выполняться, например, как "https://proxy.domain.com:10001". Запрос выполняется через HTTPS к прокси-серверу, но возвращаемое содержимое сервера передается через HTTP. Как прокси-сервер будет воздействовать на такое возвращенное содержимое?
Будет ли он применять шифрование SSL и, следовательно, отправлять обратно ресурс следующим образом: "https://proxy.domain.com:10001/resource.png"
Заранее спасибо всем
то, что вы пытаетесь, называется завершением SSL. Это когда обратный прокси обрабатывает SSL, а затем перенаправляет запрос на прокси-сервер по протоколу HTTP. Таким образом, у клиента будет HTTPS-соединение, но от обратного прокси (nginx) к прокси-серверу (apache) будет HTTP-соединение. В nginx вы делаете следующее:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.chained.crt;
ssl_certificate_key www.example.com.key;
location /{
proxy_pass http://upstream_name:80;
proxy_set_header Host $host;
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 $scheme;
proxy_set_header X-Forwarded-Scheme $scheme;
}
}
Если вы хотите изучить его больше, вы можете использовать эту официальную документацию от Nginx. https://www.nginx.com/resources/admin-guide/nginx-ssl-termination/. Что касается смешанного контента, я думаю, что то же самое с @Bert. Возможно, это потому, что в HTML вы все еще обслуживаете протокол http.