侧边栏壁纸
  • 累计撰写 1 篇文章
  • 累计创建 2 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
ECS

基于阿里云ECS+Halo+Nginx配置SSL

Kaiyun
2025-01-21 / 0 评论 / 3 点赞 / 70 阅读 / 0 字

准备工作

  1. 开通并完成ECS服务器部署

  2. 注册域名(阿里云万网

  3. 完成ICP备案

  4. 完成公安联网备案

  5. 申请SSL证书(免费证书申请:OHTTPS

  6. 下载证书文件(需*.pem格式)

正式开始

登录ECS服务器控制台(SSH),上传pem证书(fullchain.cer - 证书文件)和pem私钥(cert.key - 私钥文件)至 /tmp/ 文件夹。

#文件名......文件作用
#fullchain.pem......包括了cert.pem和chain.pem的内容
#privkey.pem......证书的私钥

sudo mv /tmp/fullchain.pem /../nginx/ssl/fullchain.pem
sudo mv /tmp/privkey.pem /../nginx/ssl/privkey.pem
#由于开通ECS服务器时为配置root账号,故需要使用sudo 命令进行提权操作,下同。
#*.pem 文件的文件名称需按实际情况替换
#nginx反代理目录需按实际情况更改

打开 /../Nginx/conf.d/halo.conf文件,或者先备份原始文件以便后期恢复。

sudo vim /../nginx/conf.d/halo.conf
sudo cp /../nginx/conf.d/halo.conf /../nginx/conf.d/halo.conf.bak

找到listen 443(即监听443端口)相关语句,如下所示,并修改(原代码为注释掉的,将前面的【#】删除即可),若无ipv6访问需求,则可以不用修改第二行(即:#listen [::]:443 ssl http2 default_server;)。

#listen 443 ssl http2 default_server;
#listen [::]:443 ssl http2 default_server;
#if ($scheme = http) {
#    return 301 https://$host$request_uri;
#}
#ssl_certificate /etc/nginx/ssl/fullchain.pem;
#ssl_certificate_key /etc/nginx/ssl/privkey.pem;

修改后如下所示:

listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
if ($scheme = http) {
  return 301 https://$host$request_uri;
}
#根据实际情况修改fullchain.pem文件和privkey.pem文件的存储路径即可
ssl_certificate /../nginx/ssl/fullchain.pem;
ssl_certificate_key /../nginx/ssl/privkey.pem;

完成修改后,保存 halo.conf 文件并退出,然后重启ECS服务器。

Error Code

502(Bad Gateway)报错

NGINX 配置问题

proxy_pass 指令错误

检查 proxy_pass 指令的配置,确保它指向正确的后端服务器地址和端口。例如:

proxy_pass http://backend_server_ip:backend_server_port;

错误的 IP 或端口将导致 NGINX 无法连接到后端服务器。

协议不匹配

如果后端服务器使用 https 而 proxy_pass 指令使用 http,或者反之,可能会导致 502 错误。

确保协议匹配,例如:

proxy_pass https://backend_server_ip:backend_server_port;

缓存问题

缓存服务器(如 Redis 或 Memcached)可能出现问题,如果后端应用使用它们进行缓存。

检查缓存服务器的状态和配置,确保其正常运行。可以尝试暂时绕过缓存进行测试,看是否解决 502 错误。

出现提示“ERR_TOO_MANY_REDIRECTS”

检查 proxy_set_header 配置

  • 确保在 NGINX 的proxy_set_header指令中正确设置了Host头。如果设置错误,可能会导致后端服务器认为请求来自错误的域名,从而将请求重定向到一个不正确的位置,引发循环。

  • 例如,正确的配置可能是:

proxy_set_header Host $host;
proxy_set_header X - Real - IP $remote_addr;
  • 这里$host变量包含了客户端请求中的原始主机名。如果将Host头设置为其他值,可能会导致重定向问题。

检查 proxy_pass 和 rewrite 规则

  • proxy_pass指令和rewrite规则一起使用时,可能会出现意外的重定向。

  • 假设你有一个rewrite规则,它将请求的 URL 路径进行了修改,并且proxy_pass指向的后端服务器期望的路径格式与rewrite后的路径不匹配,这可能会导致后端服务器发出重定向请求,而 NGINX 又会继续按照配置进行处理,从而形成循环。

  • 例如,以下是一个可能导致问题的错误配置:

location /app {
    rewrite ^/app/(.*)$ /$1 break;
    proxy_pass http://backend;
}
  • 如果后端服务器在接收到没有/app前缀的请求时,会重定向到带有/app前缀的 URL,就会出现循环重定向。正确的做法可能是调整rewrite规则或者在代理请求到后端服务器时,正确处理路径相关的问题。

附录

vi/vim 命令使用方法如下:

简介

vi 是 Unix 系统中最基本的文本编辑器,vim 是 vi 的增强版本,它们功能强大,具有丰富的编辑和配置选项。

用法

打开文件

在终端中输入vim 文件名,例如vim test.txt,即可打开名为 test.txt 的文件。

进入编辑模式

按下i键(insert 的缩写),即可进入插入模式,此时可以在光标所在位置输入和编辑文本。

保存并退出

按下Esc键退出编辑模式,输入:wq(write quit 的缩写)并回车,即可保存文件并退出 vim。如果不想保存修改,可输入:q!强制退出。

3
ECS
博主关闭了所有页面的评论