gpt4 book ai didi

python - satchmo nginx 重定向到 https,然后重定向到 http,然后返回

转载 作者:行者123 更新时间:2023-11-30 23:41:11 27 4
gpt4 key购买 nike

我在一个名为 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()

感谢大家的帮助!

最佳答案

Satchmo 包含一个名为 satchmo_store.shop.SSLMiddleware.SSLRedirect 的中间件,它会自动重定向到站点的 SSL/非 SSL 部分。如果您希望通过 SSL 提供 URL,则必须将其设置为通过 SSL 提供服务,否则中间件将重定向到非 SSL 页面。来自文档:

This middleware answers the problem of redirecting to (and from) a SSL secured path by stating what paths should be secured in urls.py file. To secure a path, add the additional view_kwarg 'SSL':True to the view_kwargs.

For example

urlpatterns = patterns('some_site.some_app.views',
(r'^test/secure/$','test_secure',{'SSL':True}),
)

All paths where 'SSL':False or where the kwarg of 'SSL' is not specified are routed to an unsecure path.

For example

urlpatterns = patterns('some_site.some_app.views',
(r'^test/unsecure1/$','test_unsecure',{'SSL':False}),
(r'^test/unsecure2/$','test_unsecure'),
)

就您而言,由于您通过 SSL 为整个网站提供服务,因此您可以在 settings.py 文件中禁用该中间件。

关于python - satchmo nginx 重定向到 https,然后重定向到 http,然后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12183268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com