在Apache2上使用WSGI实现SSL

46

我正在尝试在我维护的Django网站上设置SSL,但在使用SSL设置VirtualHost时遇到了一些问题。 我按照这里的说明进行操作,但每次尝试重新启动apache时,它告诉我无法重新启动,因为有多个virtualhosts使用相同的wsgi配置:

/etc/init.d/apache2 reload
Syntax error on line 33 of /etc/apache2/sites-enabled/www.mydomain.com:
Name duplicates previous WSGI daemon definition.
...fail!

我知道发生了什么事情,但不知道如何解决。任何建议都将不胜感激,谢谢!这是我的VirtualHosts文件的样子:

<VirtualHost *:80>
    ServerAdmin my@email.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    DocumentRoot /sites/mydomain

    # WSGI Settings
    WSGIScriptAlias / /sites/mydomain/wsgi_handler.py
    WSGIDaemonProcess mydomain user=myuser group=mygroup processes=1 threads=1
    WSGIProcessGroup mydomain

    # Static Directories
    Alias /static /sites/mydomain/static/
    <Location "/static">
            SetHandler None
    </Location>

    Alias /img /sites/mydomain/img/
    <Location "/img">
            SetHandler None
    </Location>

</VirtualHost>

<VirtualHost *:443>
    ServerAdmin my@email.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    DocumentRoot /sites/mydomain

    # WSGI Settings
    WSGIScriptAlias / /sites/mydomain/wsgi_handler.py
    WSGIDaemonProcess mydomain user=myuser group=mygroup processes=1 threads=1
    WSGIProcessGroup mydomain

    # Static Directories
    Alias /static /sites/mydomain/static/
    <Location "/static">
            SetHandler None
    </Location>

    Alias /img /sites/mydomain/img/
    <Location "/img">
            SetHandler None
    </Location>

    # SSL Stuff
    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/crt/vhost1.crt
    SSLCertificateKeyFile /etc/apache2/ssl/key/vhost1.key
    <Location />
            SSLRequireSSL On
            SSLVerifyClient optional
            SSLVerifyDepth 1
            SSLOptions +StdEnvVars +StrictRequire
    </Location>
</VirtualHost>
2个回答

53

删除这行代码:

WSGIDaemonProcess mydomain user=myuser group=mygroup processes=1 threads=1

从端口443的VirtualHost中,针对'mydomain'的WSGIProcessGroup能够访问端口80中WSGIDaemonProcess的定义。

换句话说,正如错误信息所示,WSGIDaemonProcess的名称(即'mydomain')必须在整个Apache服务器上唯一。

跨越VirtualHost进行引用意味着站点的HTTP和HTTPS变体仍将在同一个守护程序进程组/解释器中运行。


12

发布这篇帖子是希望能对其他人有所帮助...

我遇到了这个错误,因为一个虚拟主机文件被符号链接两次放在了sites-enabled目录中。


我真是太傻了,我把同一个配置文件为了备份而复制到了sites-enabled文件夹里。谢谢! - Memet Olsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接