【问题标题】:Adding another Django site breaks existing SSL Django site添加另一个 Django 站点会破坏现有的 SSL Django 站点
【发布时间】:2016-10-12 22:44:37
【问题描述】:

我有:

  • Debian 虚拟服务器
  • Nginx
  • 提供的静态网站
  • 提供的非 SSL Django 站点
  • SSL Django 站点提供服务

我尝试使用现有配置文件作为模板添加新的 Django 站点 (WR)。 WR 可以工作,但是当我添加符号链接并重新启动 Nginx 时,现有的 SSL 站点 (TC) 会出现 SSL 错误。

我不知道为什么它会破坏 TC,想知道是否有人可以提供帮助?

删除 WR 配置文件的链接并重新启动 Nginx 修复 TC。

添加一个基本的 Nginx conf 文件来为 WR 提供静态页面不会破坏 TC。

在 TC 转换为 SSL 之前设置的同一服务器上的另一个非 SSL Django 站点 (HO) 将继续工作。

我已经检查并三次检查了服务 WR 所需的各种配置文件,但无法弄清楚为什么激活它会破坏 TC。

有什么想法吗?

thinkingcomputing.com (TC) Nginx 配置

upstream tc_app_server {
  server unix:/path/to/venv/run/gunicorn.sock fail_timeout=0;
}

server {
    listen 80;
    server_name thinkingcomputing.com www.thinkingcomputing.com;
    return 301 https://www.thinkingcomputing.com$request_uri;
}

server {
    listen 443 ssl;
    ssl_certificate /path/to/ssl.crt;
    ssl_certificate_key /path/to/key.key;

    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 180m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    server_name thinkingcomputing.com;
    return 301 https://www.thinkingcomputing.com$request_uri;

}

server {
    listen 443 ssl;

    ssl_certificate /path/to/ssl.crt;
    ssl_certificate_key /path/to/key.key;

    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 180m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    server_name www.thinkingcomputing.com;

    client_max_body_size 4G;
#
# ACCESS LOG PATHS AND FILE LOCATIONS REMOVED
#
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        if (!-f $request_filename) {
            proxy_pass http://tc_app_server;
            break;
        }
    }
#
# ERROR PAGE LOCATIONS
#
}

westraven.co.uk (WR) Nginx 配置:

upstream wr_app_server {
  server unix:/path/to/venv/run/gunicorn.sock fail_timeout=0;
}


server {
    listen 80;
    listen 443 ssl;
    server_name westraven.co.uk;
    return 301 $scheme://www.westraven.co.uk$request_uri;
}

server {

    listen   80;
    listen 443 ssl;
    server_name www.westraven.co.uk;

    client_max_body_size 4G;

#
# ACCESS AND ERROR LOG PLUS OTHER FILE LOCATIONS REMOVED
#

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        if (!-f $request_filename) {
            proxy_pass http://wr_app_server;
            break;
        }
    }

#
# ERROR PAGES LOCATIONS REMOVED
#
}

【问题讨论】:

  • 所有这些两个字母的缩写让人很难理解你的意思。另外,发布实际代码和错误。
  • 向我们展示您的 nginx 配置和错误日志。 minimal reproducible example
  • 我首先将问题写出来,将它们称为新站点、SSL 站点和以前的非 SSL 等,我认为这更令人困惑。您认为使用域名会更好吗?
  • 我将获取 nginx 配置以进行发布,但错误日志未显示任何错误。当 westraven.co.uk 被激活时,thinkingcomputing.com 仍然在后台运行,但是当您尝试访问它时,浏览器中会显示 SSL 错误。

标签: django ssl nginx


【解决方案1】:

现在看起来很明显,但问题似乎与 WR 侦听并首先捕获应该由 TC 配置捕获的 443 SSL 请求有关。

我从 WR 中删除了“listen 443 ssl”,现在似乎一切正常。接下来要查找的是 Nginx 是否可以在同一台服务器上处理多个 SSL 站点,以防我将来升级 westraven.co.uk。

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多