准备工作
- 一台 Linux 服务器 (推荐 CentOS)
- 一个域名,已申请 ssl 证书
- 服务器安装 Nginx;参考:How To Install Nginx on CentOS 7
创建配置文件
将已申请的证书文件和私钥文件存放到 /etc/nginx/ssl
目录下,在 /etc/nginx/conf.d
目录下创建 mysite.conf
文件。内容如下:
server {
listen 80;
return 400;
}
server {
listen 80;
server_name mysite.com;
return 301 https://$server_name$request_uri;
}
server{
listen 443 default;
ssl on;
ssl_certificate /etc/nginx/ssl/mysite.crt;
ssl_certificate_key /etc/nginx/ssl/mysite.key;
return 400;
# 日志文件,需创建
access_log /data/log/nginx/default.access.log;
}
server{
#比起默认的80 使用了443 默认 是ssl方式 多出default之后的ssl
listen 443;
#开启 如果把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用
ssl on;
#证书(公钥.发送到客户端的)
ssl_certificate /etc/nginx/ssl/mysite.crt;
#私钥,
ssl_certificate_key /etc/nginx/ssl/mysite.key;
#下面是绑定域名
server_name mysite.com;
location / {
proxy_redirect off; #禁止跳转
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#配置反向代理,项目运行端口
proxy_pass http://127.0.0.1:8081;
}
access_log /data/log/nginx/mysite.access.log;
}
前两个server配置项是为了在使用ip或未配置域名访问时,返回400错误,用已配置域名使用HTTP访问时,强制跳转到HTTPS。
重启 Nginx
systemctl restart nginx
如果没有报错的话,HTTPS服务就可以正常访问了。