Apache возвращает 408 при добавлении www
У меня есть сервер под управлением Debian 8.11 и Apache 2.4.10, настроенный для обслуживания двух веб-сайтов. Один из них — веб-сайт, созданный с помощью WordPress (example.com), другой — форум, созданный с помощью NodeBB (forum.example.com, с которым вообще нет проблем).
Веб-сайт должен быть доступен как example.com, как или даже ввести IP-адрес. Все http-запросы должны перенаправляться на https. Первый и последний случаи работают, но когда я ввожу www.example.comwww.example.com (с www, не имеет значения, http или https), я получаю следующую ошибку в браузере:
Error 543
The origin web server is not available
Если я открою журналы Apache, я найду это в access.log:
"-" 408 137 "-" "-"
Это файл myvhost для HTTP:
<VirtualHost *:80>
DocumentRoot /var/www/wordpress
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/wordpress>
Options FollowSymLinks
AllowOverride All
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName forum.example.com
Redirect / https://forum.example.com/
</VirtualHost>
Это для HTTPS:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@dymstudios.com
DocumentRoot /var/www/wordpress
Redirect permanent /phpmyadmin https://example.com/phpmyadmin
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/wordpress>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/www_example_com.crt
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-comodo.key
SSLCertificateChainFile /etc/ssl/certs/COMODORSACertificateBundle.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
# SSL Protocol Adjustments:
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
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
</VirtualHost>
<VirtualHost *:443>
ServerName forum.example.com
ServerAdmin admin@dymstudios.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/forum_example_com.crt
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-forum-comodo.key
SSLCertificateChainFile /etc/ssl/certs/COMODORSAForumCertificateBundle.crt
<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
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
RequestHeader set X-Forwarded-Proto "https"
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:4567/$1 [P,L]
ProxyPass / http://127.0.0.1:4567/
ProxyPassReverse / http://127.0.0.1:4567/
ErrorDocument 503 http://status.example.com
</VirtualHost>
</IfModule>
... и вот htaccess, который я использую на веб-сайте WordPress:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
</IfModule>
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Все ресурсы, которые я нашел по ошибкам 403, охватывают разные сценарии, поэтому я здесь действительно заблудился. Спасибо вам всем!