Nginx配置反向代理与SSL证书
Halo配置Nginx反向代理与SSL证书
前言
最近装了Halo的博客,申请了证书,需要配置一下SSL证书才可以使用Https访问,一顿操作之后搞好了,现在把流程记录下,如果以后有需要,可以直接看这边文档。
安装SSL模块前需要关闭nginx!!!
命令:./nginx -s stop
1 安装Nginx
步骤略过。。。
2 安装SSL模块
如果你不知道你的Ngnix安装时有没有安装SSL模块,可以按照以下方式检查:
- 进入Nginx安装文件夹,执行如下命令
// 默认安装文件夹:
cd /usr/local/nginx/sbin/
// 执行如下命令:
./nginx -V
// 出现以下内容则为安装成功,反之则未安装:
configure arguments: --with-http_ssl_module
依次执行以下步骤,安装SSL模块(先停止nginx服务再执行安装):
// 找到解压目录(替换成你自己的解压路径)
cd /opt/nginx/nginx-1.14.2
// 执行添加模块命令
./configure --with-http_ssl_module
// 如果出现这个错误(./configure:错误:SSL模块需要OpenSSL库。)依次执行下面命令
yum -y install openssl openssl-devel
./configure
./configure --with-http_ssl_module
// 执行make命令
make
//使用新的程序复制过去覆盖之前
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx
// 来到Nginx安装目录下,来查看是否有安装ssl模块成功
./nginx -V
3 申请证书,下载密钥文件
腾讯云申请证书,下载Nginx证书文件,此步骤操作可以在腾讯云进行可视化操作,不再赘述了。
4 编写配置文件
4月18日,时隔十天,填坑一下这篇文章。
下载证书之后,将下图中标注的量文件复制到服务器中,推荐放到etc/ssl
文件夹下:
文件复制之后,打开Nginx配置文件进行证书配置
# 切换到nginx配置文件目录
cd /usr/local/nginx/conf
# 修改nginx配置文件(此处推荐使用FinalShell,可以文本可视化操作)
vi nginx.conf
具体的配置可以参考我的配置文件:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
# 定义一个服务地址
upstream halo {
server 127.0.0.1:8090;
}
server {
# 监听端口443
listen 443;
# 域名
server_name qiuzhong.fun;
# 调整请求体的大小为1G,防止上传较大的文件报错
client_max_body_size 1024m;
# 开启SSL证书
ssl on;
# 从腾讯云获取到的crt文件的全路径
ssl_certificate /etc/ssl/qiuzhong.fun_bundle.crt;
# 从腾讯云获取到的key文件的全路径
ssl_certificate_key /etc/ssl/qiuzhong.fun.key;
# 指定客户端可以重用会话参数的时间
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
# 监听80端口
listen 80;
server_name qiuzhong.fun;
# 重定向到443端口
rewrite ^/(.*)$ https://qiuzhong.fun:443/$1 permanent;
}
}
5 重启Nginx
cd /usr/local/nginx/sbin/
# 启动Nginx
./nginx
# 停止Nginx
./nginx -s stop
# 退出Nginx
./nginx -s quit
# 重启Nginx
./nginx -s reload
如果重启报错:
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
执行下方命令杀掉端口进程:
fuser -k 443/tcp
fuser -k 80/tcp
再次启动即可!