我从namecheap.com购买了SSL证书,并将所需文件放在我的Ubuntu服务器上(key&crt's)。我正在使用mod_wsgi来为Apache提供Django应用程序。我在安装SSL证书时遇到问题。
当前配置(/etc/apache2/sites-available/000-default.conf)
<VirtualHost *:80>
ServerAdmin [email protected]
#DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Django Application
Alias /static /home/Django/professor/static_root
<Directory /home/Django/professor/static_root>
Require all granted
</Directory>
<Directory /home/Django/professor/professor>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess professor python-path=/home/Django/professor:/home/Django/professor-vm/lib/python2.7/site-packages
WSGIProcessGroup professor
WSGIScriptAlias / /home/Django/professor/professor/wsgi.py
#ServerName example.com
#SSLEngine on
#SSLCertificateFile /etc/apache2/ssl/server.crt
#SSLCertificateKeyFile /etc/apache2/ssl/server.key
#SSLCACertificateFile /etc/apache2/ssl/intermediate.crt
</VirtualHost>
我已经注释掉了SSL证书的行。目前,我的应用程序运行正常,但是当我取消注释行以启用SSL证书时,我的站点提供来自/ var / www而不是应用程序的文件。有任何想法吗?
您的问题是您的apache仅配置为端口80,因此它不会通过https
(端口443)提供页面。
对于这个例子,我假设你只想通过https
服务你的网站,所以这里是你的配置应该是什么样子。
这是你的:000-default.conf
<VirtualHost *:80>
ServerName example.com
ServerAdmin [email protected]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# This is optional, in case you want to redirect people
# from http to https automatically.
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
现在这里是default-ssl.conf
:
<VirtualHost *:443>
ServerName example.com
ServerAdmin [email protected]
# Django Application
Alias /static /home/Django/professor/static_root
<Directory /home/Django/professor/static_root>
Require all granted
</Directory>
<Directory /home/Django/professor/professor>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess professor python-path=/home/Django/professor:/home/Django/professor-vm/lib/python2.7/site-packages
WSGIProcessGroup professor
WSGIScriptAlias / /home/Django/professor/professor/wsgi.py
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SSLCACertificateFile /etc/apache2/ssl/intermediate.crt
</VirtualHost>
配置完成后,我们需要打开ssl站点并(可选)重写mod:
> sudo a2ensite default-ssl
> sudo a2enmod rewrite
> sudo service apache2 reload
完成Alexey的答案,当我遇到问题时,我必须禁用000-default.conf站点并仅使用ssl配置