我对一个名为satchmo的django项目有一个奇怪的问题,我使用nginx和uwsgi进行部署。
发生的事情是应用程序确实响应并重定向到https,然后重定向到http并返回到https,直到nginx停止并且应用程序永远不会响应。
帮我解决这个问题。谢谢!
这是我的网站可用的nginx配置文件:
server {
listen 80;
server_name miche.maumercado.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
charset utf-8;
server_name miche.maumercado.com;
ssl on;
ssl_certificate /home/ubuntu/test.pem;
ssl_certificate_key /home/ubuntu/cert-EO5rjY;
access_log /home/ubuntu/logs/miche/nginx/access.log;
error_log /home/ubuntu/logs/miche/nginx/error.log;
client_max_body_size 100m;
location ^~ /static/ {
alias /home/ubuntu/django-projects/miche_store/static-collect/;
expires max;
}
location ^~ /media/ {
alias /home/ubuntu/django-projects/miche_store/media/;
expires max;
}
location / {
uwsgi_pass unix:/tmp/uwsgi_miche.sock;
include /etc/nginx/uwsgi_params;
}
}
这是/ etc / init中的uwsgi.conf文件:
# file: /etc/init/uwsgi_miche.conf
description "uWSGI starter"
start on (local-filesystems and runlevel [2345])
stop on runlevel [016]
respawn
# home - is the path to our virtualenv directory
# pythonpath - the path to our django application
# module - the wsgi handler python script
exec /home/ubuntu/ve/miche_store/bin/uwsgi \
--uid ubuntu \
--pythonpath /home/ubuntu/django-projects/miche_store \
-H /home/ubuntu/ve/miche_store \
--socket /tmp/uwsgi_miche.sock \
--chmod-socket 644 \
--module wsgi \
--logdate \
--optimize 2 \
--processes=6 \
--max-requests=5000 \
--master \
--vacuum \
--logto /home/ubuntu/logs/miche/uwsgi.log
继承我的wsgi.py文件:
import os
import sys
import site
site.addsitedir('/home/ubuntu/ve/miche_store/lib/python2.6/site-packages')
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'miche_store.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
谢谢大家的帮助!
答案 0 :(得分:3)
Satchmo包含一个名为satchmo_store.shop.SSLMiddleware.SSLRedirect
的中间件,它会自动重定向到站点的SSL /非SSL部分。如果您希望通过SSL提供服务,则必须设置要通过SSL提供的URL,否则中间件会重定向到非SSL页面。来自文档:
此中间件解决了重定向到(和来自)SSL安全路径的问题 通过说明urls.py文件中应该保护哪些路径。要保护路径,请添加 额外的view_kwarg' SSL':对于view_kwargs为真。
例如
urlpatterns = patterns('some_site.some_app.views', (r'^test/secure/$','test_secure',{'SSL':True}), )
所有路径,其中' SSL':False或者' SSL'未指定路由 走向不安全的道路。
例如
urlpatterns = patterns('some_site.some_app.views', (r'^test/unsecure1/$','test_unsecure',{'SSL':False}), (r'^test/unsecure2/$','test_unsecure'), )
在您的情况下,由于您通过SSL为整个网站提供服务,因此您可以在settings.py
文件中禁用该中间件。