Apache 2.4 на Amazon Linux (примерно эквивалент RH 7, я полагаю), с различными версиями PHP.
У меня проблема с запуском скриптов PHP CGI на моем веб-сервере при включенном SSL. Например:
http://52.example.com/phpinfo.php
дает правильный результат, но когда я включаю SSL (например, https://52.example.com ), я получаю ошибку 404:
The requested URL /php-fcgi/php-cgi-5.2.17/phpinfo.php was not found on this server.
Вот содержимое файл 52.conf в каталоге my / var / www / vhosts:
<VirtualHost *:443>
ServerName 52.example.com
DocumentRoot /var/www/vhosts/52
<Directory "/var/www/vhosts/52/">
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php-cgi-5.2.17
<FilesMatch "\.php$">
Options ExecCGI
SetHandler php-cgi
</FilesMatch>
</Directory>
где site.conf - определение виртуального хоста.
А вот содержимое файла php-cgi-5.2.17:
#!/bin/sh
version="5.2.17"
PHPRC=/opt/phpfarm/inst/php-${version}/lib/php.ini
export PHPRC
PHP_FCGI_CHILDREN=3
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
# which php-cgi binary to execute
exec /opt/phpfarm/inst/php-${version}/bin/php-cgi
Как вы, наверное, догадались, я использую PHPFarm для сервера разных версий PHP на разных поддоменах.
Обратите внимание, что я не знаю наверняка , что SSL является причиной моего горя, но это кажется ужасно подозрительным.
Если у кого-то есть мысли или идеи, я был бы бесконечно благодарен. Заранее спасибо.
Apache по умолчанию использует другой файл конфигурации хоста для ssl-сервера по умолчанию. И я не вижу никаких ссылок на SSL в опубликованных вами фрагментах конфигурации ....
Итак ... вероятно, он возвращается к любому определенному хосту по умолчанию и указывает на неправильный DocumentRoot.
] Запустите apache2ctl
-S, чтобы увидеть, какие имена / псевдонимы, адреса и порты используются в данный момент. Он также сообщит вам, какой конфигурационный файл определяет его и с какой строки начинается определение.
VirtualHost configuration:
10.99.88.55:443 is a NameVirtualHost
default server example.com (/etc/apache2/sites-enabled/example.com.conf:1)
port 443 namevhost example.com (/etc/apache2/sites-enabled/example.com.conf:1)
alias www.example.com
port 443 namevhost mail.example.com (/etc/apache2/sites-enabled/mail.example.com.conf:1)
port 443 namevhost ww2.example.com (/etc/apache2/sites-enabled/ww2.example.com.conf:1)
*:80 is a NameVirtualHost
default server www.example.com (/etc/apache2/sites-enabled/000-default.conf:2)
port 80 namevhost www.example.com (/etc/apache2/sites-enabled/000-default.conf:2)
alias example.com
port 80 namevhost ww2.example.com (/etc/apache2/sites-enabled/000-default.conf:7)
port 80 namevhost mail.example.com (/etc/apache2/sites-enabled/000-default.conf:11)
Отредактируйте, чтобы включить пример определения хоста с директивами SSL, указывающими на сертификат letsencrypt с перенаправлением для того же сайта на http, чтобы их отклонить на https -
<VirtualHost 10.99.99.123:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
DocumentRoot /var/www-example.com
<directory /var/www-example.com>
Options All
AllowOverride All
Require all granted
</directory>
ErrorLog ${APACHE_LOG_DIR}/ssl-example.com-error.log
CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
CustomLog ${APACHE_LOG_DIR}/ssl-example.com-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://www.example.com
</VirtualHost>