Последнее редактирование 27.11.17
Я управляю набором веб-сайтов, все HTTP, но сейчас я добавляю веб-сайт HTTPS.
Я потратил много времени на свой файл конфигурации Apach в моей локальной среде разработки Windows, пытаясь обслуживать веб-сайты HTTP и HTTPS (это кажется сложнее, чем моя производственная среда WHM / cPanel, где я не ожидаю никаких проблем).
Примечание: этот вопрос не требует особых знаний Windows - он может применяться аналогично к Linux.
Я перепробовал много разных порядков директив и множество других вариантов. Все не работают по-разному. Но я все ближе.
Я хочу, чтобы URL-адреса, такие как localhost / spring, работали (все мои локальные веб-сайты находятся в папке C: \ Web, что эквивалентно URL-адресу localhost /).
Но мне нужна особая обработка моего единственного веб-сайта HTTPS, C: \ Web \ richard, что эквивалентно localhost / richard. Чтобы сделать этот локальный веб-сайт HTTPS, я использую простой метод редактирования локального файла HOSTS для сопоставления моего защищенного доменного имени (richardjaybrown.com) с локальным компьютером (127.0.0.5). Затем вместо использования localhost / richard, у которого нет сертификатов, я могу использовать richardjaybrown.com, который имеет (сертификат включает www.richardjaybrown.com).
Я использую локальный адрес обратной петли 127.0.0.5, чтобы указать другой IP-адрес, чтобы попытаться помочь с выбором правильных директив Apache.
Я считаю, что все это простые стандартные вещи, которые могут понадобиться любому, но я не могу заставить их работать должным образом.
Поскольку некоторые комментаторы хотели, чтобы подробности были здесь, в вопросе, а не в отдельном Pastebin, вот подробности:
1. Entire Apache config file
ServerAdmin "Local SYS5 Server (contact via www.springtimesoftware.com)"
ServerRoot "c:/Apache24"
# Main Server (and defaults?)
Listen 127.0.0.1:80
ServerName localhost
# http://localhost/WEBSITE is mapped to C:\Web\WEBSITE
DocumentRoot "c:/Web"
<Directory "c:/Web">
AllowOverride all
Require ip 127.0.0.1
Require host localhost
#Require ip 192.168.1.0/24
DirectoryIndex index.html
</Directory>
# Secure (SSL/TLS) connection for this secure (HTTPS) website
Listen 127.0.0.5:443
SSLSessionCache "shmcb:c:/Apache24/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
# see http://httpd.apache.org/docs/current/vhosts/examples.html
# Redirect all HTTP richardjaybrown.com URLs to the HTTPS version
<VirtualHost 127.0.0.5:80>
ServerName richardjaybrown.com
ServerAlias www.richardjaybrown.com
UseCanonicalName Off
RedirectMatch 301 ^/(.*)$ https://www.richardjaybrown.com/$1
</VirtualHost>
# Secure (SSL/TLS) connection for this secure (HTTPS) website
<VirtualHost 127.0.0.5:443>
ServerName www.richardjaybrown.com
ServerAlias richardjaybrown.com
UseCanonicalName Off
DocumentRoot "C:/Web/richard"
SSLEngine on
SSLCertificateFile "C:/Main/LocalCert/richard/richard.crt"
SSLCertificateKeyFile "C:/Main/LocalCert/richard/richard.key"
SSLCertificateChainFile "C:/Main/LocalCert/richard/LECA.crt"
</VirtualHost>
# Default security
#Require all denied
#AllowOverride none
#DirectoryIndex disabled
Options -Indexes -MultiViews +SymLinksIfOwnerMatch
AddDefaultCharset utf-8
# To prevent hang on any GET request (IE bug?):
AcceptFilter http none
AcceptFilter https none
# Modules used
#LoadModule access_compat_module modules/mod_access_compat.so for compatibility with Apache 2.2
LoadModule alias_module modules/mod_alias.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_debug_module modules/mod_log_debug.so
LoadModule mime_module modules/mod_mime.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/error.log"
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access.log" combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ C:/Web/cgi-bin/
ScriptAlias cgi-bin/ C:/Web/cgi-bin/
</IfModule>
<Directory C:/Web/cgi-bin>
AllowOverride None
Options +ExecCGI
Require ip 127.0.0.1
Require host localhost
</Directory>
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 405 /error.php
ErrorDocument 408 /error.php
ErrorDocument 409 /error.php
ErrorDocument 414 /error.php
ErrorDocument 500 /error.php
ErrorDocument 501 /error.php
ErrorDocument 503 /error.php
ErrorDocument 505 /error.php
# Always allow error page
<Files "/err.php">
Require ip 127.0.0.1
Require host localhost
</Files>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
#<Directory C:/>
# Allow from 127.0.0.1
# Allow from localhost
# Allow from 192.168.1.0/24
#</Directory>
# PHP
# Use PHP as a CGI binary:
#ScriptAlias /php "/Progra~2/PHP/"
#Action application/x-httpd-php "/php/php.exe "
# Use PHP as a module
#ds Must be full path for Apache:
LoadFile "C:/Progra~2/PHP/php5ts.dll"
LoadModule php5_module "C:/Progra~2/PHP/php5apache2_4.dll"
PHPIniDir "C:/Progra~2/PHP"
#AddHandler application/x-httpd-php .php
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# Temporarily prevent all caching of served files
Header unset Cache-Control
# Set default basedirs for safety
php_value open_basedir "C:\Web;C:\ProgramData\MySQL\MySQL Server 5.6\data;"
2. HOSTS file
127.0.0.5 www.richardjaybrown.com richardjaybrown.com
3. .htaccess file in C:\Web\richard
DirectoryIndex index.html
3. Some Tests (browser URLs)
http://www.richardjaybrown.com/ should redirect to https://www.richardjaybrown.com/ locally
http://richardjaybrown.com/ should redirect to https://www.richardjaybrown.com/ locally
http://localhost/spring should redirect to http://localhost/spring locally
http://localhost should not redirect
http://localhost/web/site should not redirect
Я думаю, чтобы он работал в вашем локальном режиме, вам не нужны сертификаты хоста. Также я думаю, что вам не нужен файл конфигурации apache. Но если вам нужно, чтобы ваш сайт работал на вашем локальном компьютере, вы должны использовать файл hosts и добавить имя домена. Это означает, что вы отредактируете файл / etc / hosts в Linux, добавив еще один IP-адрес, например: 127.0.0.5 www. richardjaybrown.com Затем введите свой файл конфигурации apache, экземпляр Then, когда в вашем браузере вы добавите www.richardjaybrown.com, он будет перенаправлен на ваш локальный www.richardjaybrown.com, потому что вы добавили в свой локальный, что, если это имя поиск, он будет сначала разрешен на вашем компьютере, но с этим решением у вас не будет доступа к вашему производственному сайту: www.richardjaybrown.com