0

У меня есть веб-сайт TurboGears (v2.2.1 или v2.3.1), работающий по HTTP под Apache. Веб-сайт HTTP работает отлично, но я пытаюсь переместить его на HTTPS и нажимаю на стену. У меня есть два файла .conf и попытался скопировать блок конфигурации из текущей конфигурации HTTP в конфигурацию HTTPS.Перемещение развернутого сайта TurboGears с HTTP на HTTPS под Apache на Ubuntu 13.10

установка

Апач выглядит следующим образом:

/etc/apache2/sites-enabled/000-default.conf -> /etc/sites-available/000-default.conf 
/etc/apache2/sites-enabled/default-ssl.conf -> /etc/sites-available/default-ssl.conf 

Моя конфигурация с сайтом работает на HTTP является:

/etc/apache2/sites-available/000-default.conf:

WSGIPythonHome /usr/local/pythonenv/BASELINE 
WSGIPythonPath /usr/local/pythonenv/myapp/lib/python2.7/site-packages 

<VirtualHost *:80> 
ServerAdmin [email protected] 
ServerName myhost.mydomain.com 
DocumentRoot /var/www 
<Directory /> 
    ... 
</Directory> 
<Directory /var/www/> 
    ... 
</Directory> 
     ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
<Directory "/usr/lib/cgi-bin"> 
    ... 
</Directory> 

    # Start website configuration 

    Alias /myapp/img /usr/local/turbogears/myapp/myapp/public/img 
    Alias /myapp/css /usr/local/turbogears/myapp/myapp/public/css 
    Alias /myapp/javascript /usr/local/turbogears/myapp/myapp/public/javascript 

    WSGIDaemonProcess myapp threads=10 processes=3 
    WSGIProcessGroup myapp 
    WSGIScriptAlias /myapp /usr/local/turbogears/myapp/apache/myapp.wsgi 

    # Directory Permissions. 
    <Directory /usr/local/turbogears/myapp/apache> 
     Order deny,allow  
     allow from ... 
     deny from all 
    </Directory> 
    # End website configuration 

... #more entries for Trac and Doxygen websites 
</VirtualHost> 

/etc/apache2/sites-available/default-ssl.conf:

<IfModule mod_ssl.c> 
<VirtualHost *:443> 
ServerAdmin [email protected] 
SSLEngine On 
DocumentRoot /var/www/ssl 

    # THIS IS WHERE I TRY CUT/PASTING THE CONFIGURATION BLOCK FROM THE HTTP WEBSITE 

    <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
      SSLOptions +StdEnvVars 
    </FilesMatch> 
    <Directory /usr/lib/cgi-bin> 
      SSLOptions +StdEnvVars 
    </Directory> 
      BrowserMatch "MSIE [2-6]" \ 
      nokeepalive ssl-unclean-shutdown \ 
      downgrade-1.0 force-response-1.0 
    # MSIE 7 and newer should be able to use keepalive 
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown 
</VirtualHost> 
</IfModule> 

ports.conf:

Listen 80  
<IfModule mod_ssl.c> 
    Listen 443 
</IfModule>  
<IfModule mod_gnutls.c> 
    Listen 443 
</IfModule> 
SSLCertificateFile /admin/webcerts/mycert.cer 
SSLCertificateKeyFile /admin/webcerts/myprivate.key 

В apache2.conf:

... 
Include mods-enabled/*.load 
Include mods-enabled/*.conf 
Include ports.conf 
Include sites-enabled/ 
Include /etc/phpmyadmin/apache.conf 
LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-4.0.5/libout/apache2/mod_passenger.so 
PassengerRoot /var/lib/gems/1.9.1/gems/passenger-4.0.5 
PassengerDefaultRuby /usr/bin/ruby1.9.1 
... 

Чтобы развернуть сайт на HTTPS, я переместил блок конфигурации веб-сайта от 000- default.conf по умолчанию -ssl.conf и перезапустить apache, но я получаю ошибку 404:

Not Found 
The requested URL /myapp was not found on this server. 

Я попытался переместить глобальные директивы WSGIPythonHome и WSGIPythonPath в default-ssl.conf в случае, если сначала был прочитан файл (это не так, как я знаю), но это не помогло. Файлы журнала не содержат никакой полезной информации, которую я вижу.

У меня мало опыта Apache, но из других потоков SO, похоже, некоторые вещи, которые изменились с Ubuntu 13. Например, директива DocumentRoot в default-ssl.conf не работает для меня, что может быть важно. Добавление глобального значения DocumentRoot в /etc/apache2/apache2.conf работает, но проблема в том, что он глобальный.

404 страница на порт 443 перечислены эти как модули, которые Apache загружен:

Apache/2.4.6 (Ubuntu) 
PHP/5.5.3-1ubuntu2 
mod_python/3.3.1 
Python/2.7.5+ 
OpenSSL/1.0.1e 
mod_wsgi/3.4 
Phusion_Passenger/4.0.5 

Любая помощь будет оценена в то время как я до сих пор некоторые волосы осталось!

ответ

0

The (раздражающий) решение для меня было изменить

<VirtualHost *:443> 

в

<VirtualHost _default_:443> 

Это работало в первый, но не позже. Что показалось st

<VirtualHost servers.main.ip.address:443> 

Одним из факторов может быть то, что на сервере имеется четыре сетевых интерфейса.

Чтобы получить это решение, я впервые заметил, что журналы доступа SSL в/var/log/apache2 были пустыми, предполагая, что сайт SSL даже не обслуживается. Затем я попытался запустить сайт SSL на 127.0.0.1 и протестировать локально, что сработало - он действительно жаловался на сертификат SSL, поскольку он был создан с помощью записи DNS. Еще несколько поисков привели меня к решению выше. Если это нехорошее решение, пожалуйста, дайте мне знать, но мне кажется, что это работает.