网络服务搭建篇 其三
前文:
DNS服务器搭建
DHCP服务器搭建
环境
云服务器
- IP:154.209.235.33
- 系统:Ubuntu 18.04 x86_64
- 状态:已配置好并能够以root用户登录
域名:nos.linzyjx.com,已经添加了A记录154.209.235.33
目标
使用apache建立一个虚拟网站,使用指定域名,并启用https(事先申请好了证书)。
步骤
安装apache服务器
apt update
apt install apache2
安装完成后使用浏览器访问154.209.235.33,查看网页是否正常
可以看见网页正常加载。在该页面中,我们可以看见网站的根目录在/var/www/html
下,配置文件目录在/etc/apache2
下
为了安全起见,我们将该默认网页替换掉。
mv /var/www/html/index.html /var/www/html/index.html.bak
nano /var/www/html/index.html
替换后的index.html内容:
<h1>It Works!</h1>
重新访问154.209.235.33
创建虚拟主机
在/var/www
中新建目录nos.linzyjx.com
,这是域名的根目录
mkdir -p /var/www/nos.linzyjx.com/public_html
我们在该目录下放置一个简单的测试文件
nano /var/www/nos.linzyjx.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to nos.linzyjx.com</title>
</head>
<body>
<h1>Success! nos.linzyjx.com home page!</h1>
</body>
</html>
为避免任何权限问题,我们可以将目录的所有权更改为 apache 用户(www-data)
chown -R www-data: /var/www/nos.linzyjx.com
添加虚拟主机配置文件/etc/apache2/sites-available/nos.linzyjx.com.conf
<VirtualHost *:80>
ServerName nos.linzyjx.com
ServerAlias www.nos.linzyjx.com
ServerAdmin linzyjx@gmail.com
DocumentRoot /var/www/nos.linzyjx.com/public_html
<Directory /var/www/nos.linzyjx.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nos.linzyjx.com-error.log
CustomLog ${APACHE_LOG_DIR}/nos.linzyjx.com-access.log combined
</VirtualHost>
- ServerName:应与此虚拟主机配置匹配的域。 这应该是您的域名。
- ServerAlias:也应与此虚拟主机匹配的所有其他域,例如www子域。
- DocumentRoot:Apache将从中提供域文件的目录。
Options:该指令控制特定目录中可用的服务器功能。
- -Indexes:防止目录列表。
- FollowSymLinks:此选项告诉您的Web服务器遵循符号链接。
- AllowOverride:指定.htaccess文件中声明的哪些指令可以覆盖配置指令。
- ErrorLog,CustomLog:指定日志文件的位置。
使用a2ensite
程序帮助应用配置
a2ensite nos.linzyjx.com
测试配置语法是否正确:
apachectl configtest
重启apache2服务应用配置
systemctl restart apache2
(由于这个域名加入了HSTS预载名单,所以无法使用http访问,只能使用https)
启用HTTPS
事先已经准备好了证书
使用以下命令启用mod_ssl、mod_headers和HTTP/2模块:
a2enmod ssl
a2enmod headers
a2enmod http2
创建/etc/apache2/conf-available/ssl-params.conf
配置文件(为了提高SSL安全性)
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off
启用配置文件
a2enconf ssl-params
重新加载apache使模块生效
systemctl reload apache2
将含有证书文件的目录上传到/etc/ssl
目录下
编辑之前那个虚拟主机配置文件/etc/apache2/sites-available/nos.linzyjx.com.conf
,在文件末尾添加:
<VirtualHost *:443>
ServerName nos.linzyjx.com
ServerAlias www.nos.linzyjx.com
Protocols h2 http:/1.1
<If "%{HTTP_HOST} == 'www.nos.linzyjx.com'">
Redirect permanent / https://nos.linzyjx.com/
</If>
DocumentRoot /var/www/nos.linzyjx.com/public_html
ErrorLog ${APACHE_LOG_DIR}/nos.linzyjx.com-error.log
CustomLog ${APACHE_LOG_DIR}/nos.linzyjx.com-access.log combined
SSLEngine On
SSLCertificateFile /etc/ssl/nos.linzyjx.com/cert.pem
SSLCertificateKeyFile /etc/ssl/nos.linzyjx.com/privkey.pem
SSLCertificateChainFile /etc/ssl/nos.linzyjx.com/chain.pem
# Other Apache Configuration
</VirtualHost>
- SSLCertificateFile是证书公钥文件
- SSLCertificateKeyFile是证书的私钥文件
- SSLCertificateChainFile是证书链文件
这个配置在443端口上也建立了一个虚拟主机,并且将www.nos.linzyjx.com这个域名重定向到nos.linzyjx.com,并且启用了SSL。
重新加载Apache服务
systemctl reload apache2
测试
访问域名nos.linzyjx.com