gpt4 book ai didi

ssl - 使 SSL 与 django + nginx + wsgi 一起工作时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:56:30 25 4
gpt4 key购买 nike

我遵循了 Django + nginx + wsgi + ssl 的几个示例,但我无法让它们工作。我只是在我的浏览器中收到一个错误,而不是无法连接。

我在主机上运行两个网站。除了 IP 地址、服务器名称和目录之外,配置文件完全相同。

当两者都不使用 SSL 时,它们工作正常。当我尝试使用其中之一收听 443 时,我无法连接到任何一个。

我的配置文件如下,如有任何建议,我们将不胜感激。

server{
listen xxx.xxx.xxx.xxx:80;
server_name sub.domain.com;

access_log /home/django/logs/nginx_customerdb_http_access.log;
error_log /home/django/logs/nginx_customerdb_http_error.log;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
}

location /site_media/ {
alias /home/django/customerdb_site_media/;
}

location /admin-media/ {
alias /home/django/django_admin_media/;
}
}

server{
listen xxx.xxx.xxx.xxx:443;
server_name sub.domain.com;

access_log /home/django/logs/nginx_customerdb_http_access.log;
error_log /home/django/logs/nginx_customerdb_http_error.log;

ssl on;
ssl_certificate sub.domain.com.crt;
ssl_certificate_key sub.domain.com.key;
ssl_prefer_server_ciphers on;


location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol https;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
}

location /site_media/ {
alias /home/django/customerdb_site_media/;
}

location /admin-media/ {
alias /home/django/django_admin_media/;
}
}


<VirtualHost *:8080>
ServerName xxx.xxx.xxx.xxx
ServerAlias xxx.xxx.xxx.xxx

LogLevel warn
ErrorLog /home/django/logs/apache_customerdb_error.log
CustomLog /home/django/logs/apache_customerdb_access.log combined

WSGIScriptAlias / /home/django/customerdb/apache/django.wsgi
WSGIDaemonProcess customerdb_wsgi processes=4 threads=5
WSGIProcessGroup customerdb_wsgi

SetEnvIf X-Forwarded-Protocol "^https$" HTTPS=on

</VirtualHost>

UDPATE:主机上存在两个站点(在不同的 IP 上)是问题所在。如果我删除其他网站,上面的设置大部分都有效。这样做还会带来另一个问题:chrome 不认为该网站是安全的,它表示某些内容未加密。

最佳答案

[这实际上应该是评论...]

你还应该设置


proxy_set_header X-Forwarded-Protocol $scheme

当连接安全时向 Django 指示,否则你的 https 链接将被重定向到 http,这是不好的。

这将在实际为 http 时设置 http,在实际为 https 时设置 https

关于ssl - 使 SSL 与 django + nginx + wsgi 一起工作时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4622704/

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