在apache服务器上为laravel配置https

时间:2019-12-18 14:08:29

标签: laravel https openssl ubuntu-18.04

我在ovh上有一个vps,其中许多站点通过 “ sites-aviable.conf”(Apache)。

需要考虑的事情是我的vps没有域名,而只是由ovh提供的名称,因此,如果我尝试在某些可以使用ssl证书的机构上使用它,则可以使用它! 我需要为某些站点设置https而不是http,所以我开始使用open ssl生成自签名证书。 然后,我检查端口443是否处于侦听状态,并且看起来还可以。 然后,我将.env文件上的APP_URL从http更改为https,但是没有任何变化。

sites-aviable.conf

包含类似内容的

<VirtualHost *:80>

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/AAAA/public
ServerName http://xxxxxxxxxxxx.net
Alias /web2 /var/www/html/BBBBB/public

<Directory /var/www/html/AAAAA>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Allow from all    
</Directory>

 <Directory /var/www/html/BBBBB>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Allow from all        
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

因此,即使对于443端口,也应该复制给我,否则我错了吗? (我尝试将80更改为443,但没有用)

我尝试添加相同的“ sites-aviable.conf” 这部分:

 DocumentRoot /var/www/html/AAAAAAA/public
    ServerName http://XXXXXXXXXXX.net
    Redirect permanent / https://XXXXXX.net

<VirtualHost *:80>部分上,然后在下面添加以下内容:

<VirtualHost _default_:443> 
ServerName https://XXXXXXXXXX.net
DocumentRoot /var/www/html/AAAAAAAA/public
SSLEngine On 
</VirtualHost>

如何将其设置为服务器?

如果我使用https访问网址,则会收到apache错误“找不到”

1 个答案:

答案 0 :(得分:1)

如果要同时支持http和https,则需要为端口80和端口443定义一个虚拟主机。但是,在端口443的虚拟主机中,还需要指定SSL证书文件和SSL证书。密钥文件。

因此,只需复制http定义并更新端口和SSL信息。您的.conf文件将类似于以下内容(基于您在问题中提供的VirtualHost定义。

# http
<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html/AAAA/public
  ServerName xxxxxxxxxxxx.net
  Alias /web2 /var/www/html/BBBBB/public

  <Directory /var/www/html/AAAAA>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Allow from all    
  </Directory>

  <Directory /var/www/html/BBBBB>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Allow from all        
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# https
<VirtualHost *:443>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html/AAAA/public
  ServerName xxxxxxxxxxxx.net
  Alias /web2 /var/www/html/BBBBB/public

  # Your SSL configuration. Update the File and KeyFile information
  # below to point to your SSL certificate.
  SSLEngine on
  SSLCertificateFile "/etc/ssl/certs/ssl-cert-snakeoil.pem"
  SSLCertificateKeyFile "/etc/ssl/private/ssl-cert-snakeoil.key"

  <Directory /var/www/html/AAAAA>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Allow from all    
  </Directory>

  <Directory /var/www/html/BBBBB>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Allow from all        
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

确保更新配置后重新启动apache。

此外,您的https网址现在应该可以使用,但是由于您使用的是自签名证书,因此您的浏览器仍然会抱怨它不安全且不受信任。我假设这是针对开发环境的,所以这不应该成为问题。如果这是供他人使用的生产站点,那么您应该从受信任的授权机构那里获取真实的SSL证书(LetsEncrypt具有免费的SSL证书)。