Назад | Перейти на главную страницу

Как настроить SSL и прокси Nginx?

У меня есть 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-адрес с использованием переменных сервера.