2022-10-15技术00
请注意,本文编写于 50 天前,最后修改于 50 天前,其中某些信息可能已经过时。

起因

  • 由于服务器到期的原因,最近对Blog做了一下迁移,原本计划由腾讯云迁移到阿里云,但是发现那样的话还必须把备案也迁移过去,实在是太麻烦了,于是考虑把博客迁移到我个人维护的课表小程序的云服务器上,但是与此同时问题也出现了。。。。

问题

  • 服务器上面有很多服务,比如课表小程序、机器人还有自己写的一些小service,所以当时采用了Nginx做端口代理分发,监听了Http的443和Http 80这两个端口,但是我的博客启动也需要监听443和80,这就导致了端口冲突,且我课表小程序的域名与我博客的域名完全不同,需要根据域名去做端口反向代理
  • 另外由于服务比较多,而且比较庞杂(我也想过迁移服务,但是没钱买服务器啊Orz),因此需要尽可能避免修改其他服务的配置,在保持现有配置的情况下加入博客的反向代理配置
  • 由于Nginx原有的证书与博客域名不匹配,因此需要单独为博客配置一下证书

解决方案

Nginx有一种叫做vHost的配置,可以将多个sever分在多个conf里单独配置,使用vhost可以解决我们的sever过多配置庞杂的问题

1. 创建一个conf.d的目录,在nginx.conf中添加如下配置:

include /etc/nginx/conf.d/*.conf;

2. 修改Blog端口以及配置vhost

新建一个Blog.conf在conf.d目录下,配置blog的vhost文件

server {
  listen 80;
  # 改为你的网址
  server_name com.xxx;
  # 重定向为 https
  return 301 https://xxx.xxx;

}
server {
  listen 443 ssl http2;
  # 改为你的网址
  server_name umb.ink;
  # HTTPS的证书的公私钥
  ssl_certificate xxxx/xxx/xxx;
  ssl_certificate_key xxx/xxx/xxx;

  location / {
    # 改为容器的 PORT,也就是目标sever的端口
    proxy_pass http://localhost:79;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
  }

}

其他的sever也可以像这样在conf.d目录下新建xxx.conf然后进行配置

3. nginx reload

nginx -s reload

之后就可以尝试访问目标sever,访问成功的话就说明配置成功了

本文作者:伞菌

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!