配置SSL证书在Apache Django的应用程序(mod_wsgi的)
问题描述:
我已经购买从namecheap.com一个SSL证书,并把我的Ubuntu服务器上的所需文件(关键& CRT的)。我使用mod_wsgi来为我的Django应用程序提供Apache服务。我在安装SSL证书时遇到问题。配置SSL证书在Apache Django的应用程序(mod_wsgi的)
当前配置(/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
答
完成阿列克谢的答案,当我面临的问题,我牛逼O禁止000-default.conf网站,并只使用SSL配置
我已完成上述但由于某种原因有无限重定向循环列出的变化。有任何想法吗?我相信它与我们的重写配置有关。 –
已修复,这是由于CloudFlare SSL欺骗Apache配置。感谢所有的帮助:) –
@KosukeMiyagi,真棒,乐于帮助。不要忘记接受答案。 :) –