我为我的 wamp64 服务器启用了 SSL,一切运行正常http://本地主机/和https://本地主机/。
但是我没有允许它查看本地主机 - 我需要为我的 1 个虚拟主机激活:
<VirtualHost *:443>
DocumentRoot "D:/DEV/www/app/public/"
ServerName dev.app.com:443
ServerAdmin admin@localhost
ErrorLog "D:/wamp64/www/ssllogs/ssl_error.log"
TransferLog "D:/wamp64/www/ssllogs/ssl_access.log"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "D:/wamp64/ssl.crt/server.crt"
SSLCertificateKeyFile "D:/wamp64/ssl.key/server.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "D:/DEV/www/app/public">
SSLOptions +StdEnvVars
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order deny,allow
Allow from all
</Directory>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "D:/wamp64/www/ssllogs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
当然,httpd-vhosts.conf 中仍然有这个
<VirtualHost *:80>
ServerName dev.app.com
DocumentRoot d:/dev/www/app/public
<Directory "d:/dev/www/app/public/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
现在,该http
版本运行良好,但是https
给我:
Forbidden
You don't have permission to access / on this server.
Apache/2.4.17 (Win64) OpenSSL/1.0.2h PHP/5.6.16 Server at dev.app.com Port 443
知道是什么问题吗?
答案1
<VirtualHost *:443>
* 匹配所有内容 - 它是一个通配符
您不应该在虚拟主机中包含端口,您已经设置好了。
ServerName dev.app.com:443
应该
ServerName dev.app.com
您无权访问此服务器上的 /。Apache/2.4.17 (Win64) OpenSSL/1.0.2h PHP/5.6.16 服务器位于 dev.app.com 端口 443
这是语法错误的结果 - Apache 2.4 的语法已更改
Order deny,allow
Allow from all
变成
Require all granted
请参阅此处了解访问控制语法更改的完整参考 https://httpd.apache.org/docs/2.4/howto/access.html
答案2
在 apache 中,您可以:同时设置两个端口和两种连接方式,这样两种方式都可以工作。您可以<VirtualHost *:80>
在文件 httpd-vhosts.conf 中设置,同时<VirtualHost _default_:443>
在文件 httpd-ssl.conf 中设置,两种方式都可以正常工作。这完全取决于您授予的访问权限。如果您希望同时访问这两种方式,请同时设置它们Require all granted