django - 添加另一个 Django 站点会破坏现有的 SSL Django 站点

标签 django ssl nginx

我有:

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

我尝试使用现有配置文件作为模板添加新的 Django 站点 (WR)。 WR 可以工作,但是当我添加符号链接(symbolic link)并重新启动 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
#
}

最佳答案

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

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

关于django - 添加另一个 Django 站点会破坏现有的 SSL Django 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37774092/

相关文章:

python - “元组”对象没有属性 'all'

django - 错误 : No such command 'flower' . 您的意思是其中之一吗? worker

javascript - 使用包含 Django 的图像将 HTML 渲染为 PDF

c# - 在 C# 中处理 HTTPS WebSocket 握手

node.js - nodejs + https + express - 错误 324 (net::ERR_EMPTY_RESPONSE)

nginx - Ratchet 没有从浏览器接收到 WebSocket 数据包?

python - Django:在 URL 模板标记中保留 GET 参数

iOS MDM 配置文件安装失败

docker - 如何从 Azure key 保管库获取证书以用于 docker 镜像

bash - 无法启动 docker nginx