blog
blog copied to clipboard
使用 Nginx 部署静态网站(含配置 HTTPS)
环境:
- Ubuntu 16.04 LTS (腾讯云服务器)
- Nginx 1.16.1
一、安装 Nginx
Nginx 是一个Web服务器,是一个反向代理工具,我们通常用它来部署静态文件。
参考:
# Ubuntu官方列表的Nginx版本不一定是最新的。所以请添加Nginx安装列表:
# 这一步不是必须的,但建议执行,不然安装的Nginx版本会挺旧的。
$ sudo add-apt-repository ppa:nginx/stable
# 更新列表
$ sudo apt-get update
# 安装 Nginx
$ sudo apt-get install nginx
$ nginx -v # 查看Nginx版本号
$ dpkg -L nginx # 查看Nginx安装位置,输出/usr/share/doc/nginx。其他文件在/etc/nginx
$ dpkg --list # 查看已安装的包
$ sudo apt-get remove nginx nginx-common # 删除Nginx(保留配置文件)
$ sudo apt-get purge nginx nginx-common # 删除Nginx(且不保留配置文件)
$ sudo apt-get autoremove # 删除依赖(dependencies)
$ service nginx status # 查看Nginx状态,默认在运行ing
# 此时访问服务器的IP地址即可看到"Welcome to nginx!"的页面
# 每次更新 Nginx 配置后,都建议重启一下 Nginx
$ service nginx start # Nginx启动命令
$ service nginx stop # Nginx停止命令
$ service nginx restart # Nginx重启命令
# Nginx默认使用80端口,请确保80端口未被其他程序占用
# 注意:需要云服务器开启相应的端口,例如腾讯云服务器开启某些端口可能需要进行安全组配置,
# 这里的腾讯云服务器默认开启80端口。
$ sudo /etc/init.d/nginx start # 启动 nginx
$ sudo /etc/init.d/nginx restart # 重启 nginx
二、配置 Nginx
参考:
- nginx.com - Full Example Configuration
- digitalocean.com - 选择参数生成 NGINX Config
- 简书 - Ubuntu服务器使用Nginx配个静态网站
默认方式安装的软件,配置一般都在 /etc
目录下。可以通过 $ sudo vim /etc/nginx/nginx.conf
直接编辑 Nginx 主配置文件(不推荐):在 http 模块中,添加如下 server 配置内容:
或者在 /etc/nginx/conf.d
目录下新建 domain-com.conf
配置文件(推荐),写入如下内容:
server{
listen 80; # 指定端口,nginx默认端口为80
server_name domain.com; # 指定域名
location / {
root /home/ubuntu/domain-com; # 指定静态网站根目录
index index.html; # 指定默认访问文件
}
}
此时,重启一下 Nginx :$ sudo /etc/init.d/nginx restart
,即可访问到 http://domain.com
。
附:如何更新 Nginx 配置文件
为什推荐在 /etc/nginx/conf.d
目录下新建配置文件?因为 /etc/nginx/nginx.conf
主配置文件的 http 模块中含有一下语句,在 /etc/nginx/conf.d
目录下新建的配置文件全部都会 include
到 Nginx 主配置文件中:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
了解更多:直接修改 /etc/nginx/nginx.conf
主配置文件、在 /etc/nginx/sites-available
目录中新建配置文件、在 /etc/nginx/conf.d
目录中新建配置文件,的区别:
Stack Exchange - What is the different usages for sites-available vs the conf.d directory for nginx
三、配置 HTTPS
参考:
首先,在 腾讯云 - SSL 证书管理控制台 中申请免费证书(或通过其他渠道申请证书),下载对应域名的证书文件(压缩包),解压缩后把 Nginx 文件夹内的证书文件和私钥文件放置到服务器:此处选择将这 2 个文件放置到服务器的 /etc/nginx/ssl-nginx-qcloud
目录中(使用 $ mkdir
新建一个 ssl-nginx-qcloud
文件夹),具体放置目录可以自行决定。
然后,接着上面第二步的"配置 Nginx",在 /etc/nginx/conf.d
目录下新建的 domain-com.conf
配置文件中,追加写入内容如下,配置 HTTPS :
server{
listen 80; # 指定端口,nginx默认端口为80
server_name domain.com; # 指定域名
location / {
root /home/ubuntu/domain-com; # 指定静态网站根目录
index index.html; # 指定默认访问的文件
# Nginx 支持 rewrite 功能:
# 访问网址链接时自动追加 .html 后缀(这样,访问网址时就可以不用 .html 后缀)
if (!-e $request_filename){
rewrite ^(.*)$ /$1.html last;
break;
}
}
# Nginx 支持 rewrite 功能:
# 可以将默认 80 端口的 HTTP 请求重定向为 HTTPS(可选项,可以不配置)。
rewrite ^(.*)$ https://$host$1 permanent;
}
# 腾讯云 https 访问配置
server {
#SSL 访问端口号为 443
#listen 443;
#启用 SSL 功能
#ssl on;
# 由于版本问题,配置文件可能存在不同的写法。此处需要使用 listen 443 ssl 代替以上写法
listen 443 ssl;
#填写绑定证书的域名
server_name domain.com;
#证书文件名称(此处的证书文件放在 /etc/nginx/ssl-nginx-qcloud 目录下)
ssl_certificate ./ssl-nginx-qcloud/1_domain.com_bundle.crt;
#私钥文件名称(此处的私钥文件放在 /etc/nginx/ssl-nginx-qcloud 目录下)
ssl_certificate_key ./ssl-nginx-qcloud/2_domain.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准(照抄即可不用修改)。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
root /home/ubuntu/domain-com;
#指定默认访问的文件
index index.html;
# Nginx 支持 rewrite 功能:
# 访问网址链接时自动追加 .html 后缀(这样,访问网址时就可以不用 .html 后缀)。
if (!-e $request_filename){
rewrite ^(.*)$ /$1.html last;
break;
}
}
}
测试 Nginx 配置文件是否正确:
$ nginx -t
$ sudo nginx -t
此时,重启一下 Nginx ,即可访问到 https://domain.com
。