本文基于 CentOS 7 下安装配置 Nginx 操作实践记录整理。
sudo yum install -y epel-release
sudo yum -y update
sudo yum install -y nginx
安装成功后,默认的网站目录为: /usr/share/nginx/html
默认的配置文件为:/etc/nginx/nginx.conf
自定义配置文件目录为: /etc/nginx/conf.d/
如果你的服务器打开了防火墙,你需要运行下面的命令,打开 80 和 443 端口。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
如果你的服务器是阿里云 ECS,你还可以通过控制台安全组,打开 80 和 443 端口,或者其他自定义端口。
具体操作路径: 阿里云 ECS 服务器 -》 安全组 -》 配置规则 -》 安全组规则 -》 入方向 -》 添加安全组规则
端口范围: 比如你要打开 80 端口,这里就填写 80/80
。
优先级: 优先级可选范围为 1-100,默认值为 1,即最高优先级。
示例图如下:
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl status nginx
systemctl enable nginx
systemctl disable nginx
curl https://get.acme.sh | sh
echo 'alias acme.sh=~/.acme.sh/acme.sh' >> ~/.bashrc
source ~/.bashrc
export Ali_Key="**********"
export Ali_Secret="**********"
acme.sh --issue --dns dns_ali -d domain
其中:
点击阿里云后台,右上角用户头像,菜单中选择 accesskeys。
查看 AccessKey ID 和 Access Key Secret,即对应上面的 Ali_Key 和 Ali_Secret。
domain 对应该账户下购买的阿里云域名。
mkdir -p /etc/nginx/ssl
acme.sh --install-cert -d domain \
--key-file /etc/nginx/ssl/domain.key \
--fullchain-file /etc/nginx/ssl/domain.crt \
--reloadcmd "service nginx force-reload"
https 证书拷贝成功。
目前 https 证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.
删除/etc/nginx/nginx.conf
中的 server 部分代码。
server {
...
}
在/etc/nginx/conf.d
创建自定义配置文件default.conf
server {
listen 80;
listen 443 ssl;
server_name domain www.domain;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
ssl on;
ssl_certificate /etc/nginx/ssl/domain.crt;
ssl_certificate_key /etc/nginx/ssl/domain.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
ssl_prefer_server_ciphers on;
error_page 497 https://$host$uri?$args;
}
其中: root /usr/share/nginx/html;
表示网站文件目录,后面的分号不可省略。
ssl_certificate 和 ssl_certificate_key 指向 https 证书。
error_page 497 https://hosturi?