在Apache上为Django应用程序配置SSL证书(mod_wsgi) [英] Configure SSL Certificate on Apache for Django Application (mod_wsgi)
问题描述
我已经从namecheap.com购买了SSL证书,并将所需的文件放在我的Ubuntu服务器(key& crt)上。我正在使用mod_wsgi为Apache服务我的Django应用程序。我在安装SSL证书时遇到问题。
I've purchased a SSL certificate from namecheap.com and placed the required files on my Ubuntu server (key & crt's). I'm using mod_wsgi to serve my Django application with Apache. I'm having issues installing the SSL certificate.
当前配置(/etc/apache2/sites-available/000-default.conf)
Current Configuration (/etc/apache2/sites-available/000-default.conf)
<VirtualHost *:80>
ServerAdmin admin@example.com
#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而不是应用程序的文件。有任何想法吗?
I've commented out the lines for the SSL certificate. Currently, my application is running fine but when I uncomment the lines to enable to SSL certificate my site serves the files from /var/www and not the application. Any ideas?
推荐答案
您的问题是您的apache仅针对端口80进行配置,因此不会为<$ c $ c> https (端口443)。
Your problem is that your apache is only configured for port 80, hence it doesn't serve pages over https
(port 443).
对于这个例子,我假设你只想通过 https
来提供你的网站,所以这里是你的配置应该如何大概看起来像。
For this example I assume you want to serve your website only over https
, so here is how your config should approximately look like.
这是你的: 000-default.conf
<VirtualHost *:80>
ServerName example.com
ServerAdmin admin@example.com
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 admin@example.com
# 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: / p>
After configuration is done, we need to turn on the ssl site and (optionally) rewrite mod:
> sudo a2ensite default-ssl
> sudo a2enmod rewrite
> sudo service apache2 reload
这篇关于在Apache上为Django应用程序配置SSL证书(mod_wsgi)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!