前言
之前在部署项目的时候,都是一股脑把反向代理配置直接写到 nginx 主配置文件中(也许不太优雅)。
比如之前部署的 Halo 博客,将反向代理自己写到配置文件中,并且这样我是自己在腾讯云申请的免费SSL证书,然后保存到服务器,来开启SSL的,感觉也比较麻烦。
# Halo
server {
listen 80; #侦听80端口,如果强制所有的访问都必须是HTTPs的,这行需要注销掉
listen 443 ssl; #侦听443端口,用于SSL
server_name blog.miykah.top; # 自己的域名
#配置 ssl
ssl_certificate /opt/cert/blog.miykah.top/blog.miykah.top_bundle.pem; # pem文件的径
ssl_certificate_key /opt/cert/blog.miykah.top/blog.miykah.top.key; # 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;
client_max_body_size 1024m;
location / {
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;
proxy_pass http://127.0.0.1:8090;
}
}
宝塔的 nginx 配置修改界面也提示:
之后可以利用宝塔建站点的方式来进行反向代理,可以很方便的管理站点,同时可以利用宝塔面板直接申请免费证书,还会自动续期。
准备
先将之前 nginx 主配置文件中,自己配置的一些反向代理配置删除掉。
比如这些:
重载 nginx 配置或重启一下 nginx。
添加站点
以 Halo 博客为例,创建站点,配置域名。
申请 SSL 证书
创建好站点后,配置站点,进入 SSL,点击 Let's Encrypt,申请证书。
PS:这里如果先配置了下一步的反向代理,是申请不了的(会提示 已开启反向代理的站点无法申请SSL),需要先关闭反向代理,申请证书后,再开启反向代理。
申请成功后可以看到部署的证书。可以开启强制 HTTPS
反向代理
然后进入站点配置的反向代理,添加反向代理。
PS:我遇到了添加反向代理失败的情况(提示:伪静态/nginx主配置/vhost/文件已经存在全局反向代理)
这里参考:https://www.jb51.net/article/254978.htm,解决。
主要排查点是:
首先需要了解nginx.conf各个路径的配置文件,这个问题涉及到三个路径的配置文件。
第一个是网站的伪静态重写配置文件,在/www/server/panel/vhost/rewrite/ 路径的文件夹下。
第二个是网站本身的配置文件,在/www/server/panel/vhost/nginx/ 路径的文件夹下。
第三个最后一个是nginx.conf配置文件,这个一般都是在/www/server/nginx/conf/ 路径下。
然后查看每个配置是否存在location / 匹配规则,有的话需要删除。
是因为我之前自己手动配置的 nginx 反向代理中包含 location / 规则。但是我已经删除掉了,不知道为啥还会出现,后来重启了几次 nginx 又成功了。。。玄学
添加成功后可以看到我们添加的反向代理:
上一步遇到 已开启反向代理的站点无法申请SSL 问题,就需要先在这里关闭反向代理。
访问测试
接下来就可以访问 blog.miykah.top 测试是否成功。
评论区