我有Nginx监听端口80上的stream量,并通过端口8080代理某些请求到Apache。我要设置Nginx监听端口443的httpsstream量,但我的问题是现在应该怎么做代理? Apache的代理服务器是否需要https或者Nginx已经解码了,所以我可以继续通过端口8080发送给Apache。顺便说一下,Apache运行的模块数量最less,目前没有SSL相关模块我需要安装任何?
以下解决scheme由Graham Dumpleton提出,解决了SSLredirect循环的问题,同时运行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)
这听起来不像一个编程问题,真的…但无论如何:不,你不需要在Apache上启用SSL。 只有侦听HTTPS请求的服务器(在端口443上)需要SSL。
一个古老的问题,但供参考,你可以看看我的博客文章使用Nginx作为SSL名称为虚拟主机的代理在Apache
它基本上转发到端口80上的Apache,并在Apache中使用mod_rpaf (反向代理添加转发),所以它会看到请求为HTTPS,这是使用服务器variablesbuild立他们的url的框架所需要的。