У меня есть Nginx, прослушивающий трафик на порту 80 и проксирующий определенный запрос к Apache через порт 8080. Я собираюсь настроить Nginx для прослушивания порта 443 для трафика https, но мой вопрос в том, как теперь должно выполняться проксирование? Должен ли прокси для Apache быть https или Nginx уже его декодировал, чтобы я мог продолжать отправлять его на Apache через порт 8080. Кстати, Apache работает с минимальным количеством установленных модулей и в настоящее время не имеет модулей, связанных с SSL, будет Мне нужно установить?
Следующее решение, предложенное Грэмом Дамплтоном, разрешило проблему циклов перенаправления SSL при запуске nginx + ssl в качестве прокси для apache + wsgi.
В вашем файле nginx.conf вам необходимо иметь:
proxy_set_header X-Url-Scheme $scheme;
Хотя ваша оболочка WSGI выглядит примерно так:
import os, sys
apache_configuration= os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
import django.core.handlers.wsgi
_application = django.core.handlers.wsgi.WSGIHandler()
def application(environ, start_response):
environ['wsgi.url_scheme'] = environ.get('HTTP_X_URL_SCHEME', 'http')
return _application(environ, start_response)
На самом деле это не похоже на вопрос программирования ... но в любом случае: нет, вам не нужно включать SSL на Apache. SSL нужен только серверу, который прослушивает HTTPS-запросы (порт 443).
Старый вопрос, но для справки вы можете посмотреть мой пост в блоге Использование Nginx в качестве прокси SSL для виртуальных хостов на основе имен в Apache
Он в основном пересылает apache на порт 80 и использует mod_rpaf (обратный прокси-сервер добавляет вперед) в apache, поэтому он будет видеть запрос как HTTPS, что необходимо для фреймворков, которые создают свой URL-адрес с использованием переменных сервера.