You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu16.04 Apache配置SSL遇阻,求正确配置路径与方法

搞定Ubuntu 16.04 + Apache SSL虚拟主机配置问题

兄弟,别慌!你的HTTP能正常访问,说明服务器和域名解析的基础是没问题的,HTTPS访问失败大概率是SSL模块没启用、配置细节出错(比如Laravel的根目录)、或者EC2安全组没放行443端口这些小问题,咱们一步步来排查解决:

1. 先确认Apache的SSL模块已经启用

Ubuntu 16.04默认Apache是没开启SSL模块的,这是最容易忽略的点!先执行这个命令:

sudo a2enmod ssl

如果提示模块已经启用就跳过,否则执行完赶紧重启Apache:

sudo systemctl restart apache2

2. 正确配置SSL虚拟主机文件

你找的/etc/apache2/sites-available/default-ssl.conf是完全正确的配置文件位置!别直接改sites-enabled里的文件,那都是软链接到sites-available的,修改源文件才是规范操作。

用编辑器打开它:

sudo nano /etc/apache2/sites-available/default-ssl.conf

把你准备的配置替换成下面这个,重点注意Laravel的根目录和必填的ServerName:

<VirtualHost *:443>
    # 必须填写你在Nominalia托管的域名,不然Apache不知道对应哪个站点
    ServerName your-domain.com
    # 如果需要支持带www前缀的域名,就加上这行
    ServerAlias www.your-domain.com

    # 划重点!Laravel的入口文件在public目录下,DocumentRoot必须指向这里,之前写/var/www/html会直接导致Laravel无法正常运行
    DocumentRoot /var/www/html/public
    <Directory /var/www/html/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile /var/www/html/sitename.com.crt
    SSLCertificateKeyFile /var/www/html/sitename.com.key
    SSLCertificateChainFile /var/www/html/intermediate-ca.crt
</VirtualHost>

3. 启用SSL站点并重启Apache

配置完后,得告诉Apache启用这个SSL站点:

sudo a2ensite default-ssl.conf

然后重启Apache让配置生效:

sudo systemctl restart apache2

4. 给证书文件设置正确权限

Apache运行用的是www-data用户,得确保它能读取你的证书文件,不然会出现权限报错:

sudo chown www-data:www-data /var/www/html/*.crt /var/www/html/*.key
sudo chmod 640 /var/www/html/*.crt /var/www/html/*.key

5. 检查EC2安全组!这步90%的人会忘

AWS的EC2安全组默认是不放行443端口的!你得登录AWS控制台,找到你的EC2实例,去安全组规则里添加一条:

  • 类型:HTTPS
  • 协议:TCP
  • 端口范围:443
  • 源:0.0.0.0/0(如果要允许所有人访问)或者你指定的IP范围

6. 验证配置有没有语法错误

执行这个命令检查Apache配置是否合法:

sudo apache2ctl configtest

如果输出Syntax OK就没问题,否则根据提示修正错误即可。

可选:把HTTP自动跳转到HTTPS

要是想让所有访问HTTP的用户自动跳转至HTTPS,就打开/etc/apache2/sites-available/000-default.conf,在<VirtualHost *:80>块里添加这段代码:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

然后重启Apache生效。

最后再确认下域名解析:去Nominalia后台检查你的域名A记录是否指向EC2的公网IP,解析是否已经生效(可以用nslookup your-domain.com命令验证)。

内容的提问来源于stack exchange,提问作者Jass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:46:29