我有:
- 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/