![关于php:使用Apache的单个IP在单个SSL证书上使用多个Django站点](https://linux22.com/image/572800/%E5%85%B3%E4%BA%8Ephp%EF%BC%9A%E4%BD%BF%E7%94%A8Apache%E7%9A%84%E5%8D%95%E4%B8%AAIP%E5%9C%A8%E5%8D%95%E4%B8%AASSL%E8%AF%81%E4%B9%A6%E4%B8%8A%E4%BD%BF%E7%94%A8%E5%A4%9A%E4%B8%AADjango%E7%AB%99%E7%82%B9.png)
从技术上讲,是否可以使用 Apache 在单个 IP 地址上使用单个 SSL 证书设置多个 Django 站点?
以下是我的 SSL 配置的摘录:
Alias /media/ x:/home/djang-apps/myapp
WSGIScriptAlias / x:/home/djang-apps/myapp/apache/django.wsgi
<Directory x:/home/djang-apps/>
Order allow,deny
Allow from all
</Directory>
我遇到的一个问题是,由于我只有一个 IP 地址,我只有 1 个虚拟主机,因此我如何引用包含每个 Django 网站的 css/images/js 等的各种媒体文件夹以及每个站点的 WSGIScriptAlias?
我目前有一个 *.foo.com 的通配符证书
因此我希望能够以这种方式添加多个站点:
website1.foo.com website2.foo.com website3.foo.com
答案1
您需要配置一个指令,并为每个不同的域NameVirtualHost
配置一个。VirtualHost
例如:
NameVirtualHost *:443
<VirtualHost *:443>
ServerName app1.foo.com
ServerAlias www.app1.foo.com
SSLEngine On
SSLCertificateFile x:/path/to/cert.pem
SSLCertificateKeyFile x:/path/to/cert.key
# Any other basic config, logging, etc..
DocumentRoot x:/home/djang-apps/app1
# Any other document mapping; that Alias directive, WSGIScriptAlias, etc
</VirtualHost>
<VirtualHost *:443>
ServerName app2.foo.com
ServerAlias www.app2.foo.com
SSLEngine On
SSLCertificateFile x:/path/to/cert.pem
SSLCertificateKeyFile x:/path/to/cert.key
# Any other basic config, logging, etc..
DocumentRoot x:/home/djang-apps/app2
# Any other document mapping; that Alias directive, WSGIScriptAlias, etc
</VirtualHost>
Apache 在启动期间可能会对服务器名称指示发出一些抱怨,由于您使用的是通配符证书,因此您可以放心地忽略它(只需确保每个虚拟主机中的 SSL 指令都指向通配符证书)。