本文章是总结一下,也是为了下次的搭建做的笔记

ipv6

首先关于ipv6,我是用的阿里云进行申请,不同的云服务器商的申请方法会不同,这里仅介绍阿里云的方法。

第一:

如何申请ipv6?
这个阿里云的云文档写的已经很全了,毕竟我也没法写的那么多。
这个是文档
注意:默认开通是内网Ip,记得开公网ip,但是要付费,建议用按流量计费,并开启cdt,送流量,计费标准在控制台中(可能改变)。

第二:在测试时运用的常见问题

  1. Q:为什么我用检测网站检测出来可以正常访问,但是电脑无法访问ipv6单独的网站无法访问
    A:可能时你的电脑不支持Ipv6访问,尝试用手机流量访问
  2. Q:如何设置服务器网站端的设置
    A:nginx的设置方法:
    要额外加一个代码
    listen [::]:80;
    而httpd则无须设置,自动就支持
    另外,请不要忘记在设置完成后重启。
    其他比较详细的方法可以参考这个文档

还有注意阿里云账号保持余额重组,其他就没有要注意的了

DNS

这个我要说的就很多了:
设置方法:
先进到控制台
2024-12-08T03:08:43.png
然后按照顶上的方法来设置一下?
2024-12-08T03:09:51.png
里面的回源选择域名,这个域名需要直接访问服务器。
其他可以自行百度
然后接下来就在官方文档以外了:

  1. Q:这个回源域名和加速域名是啥?
    A:回源域名是从这个域名来获取各种文件,加速域名则是对用户展示的域名,加速域名顾名思义就是配置了cdn的域名
  2. Q:永久重定向怎么办?
    A:参考下图
    2024-12-08T03:15:16.png
    先访问:https://cdn.console.aliyun.com/domain/detail/sc.cdn.lawrenceshi.space/perform 把忽略参数删除后
    再访问:https://api.aliyun.com/api/Cdn/2018-05-10/RefreshObjectCachesspm=a2c4g.11186623.0.0.967714dcBc6ak4强制刷新缓存
    最后配置下回源host为源站
    2024-12-08T03:18:15.png
  3. 如何自动更新SSL证书
    因为阿里云cdn的证书要自己每天更新,很麻烦,所以我参照阿里云的api文档写了个调用阿里云api的py程序,每当自动更新证书时自动配置ssl证书
    现在分享在此
    注:在执行之前记得安装环境 链接
    本文件根据阿里云自动生成的文件更改

    # -*- coding: utf-8 -*-
    # This file is auto-generated, don't edit it. Thanks.
    import os
    import sys
    
    from typing import List
    
    from alibabacloud_cdn20180510.client import Client as Cdn20180510Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_cdn20180510 import models as cdn_20180510_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    
    class Sample:
     def __init__(self):
         pass
    
     @staticmethod
     def create_client() -> Cdn20180510Client:
         """
         使用AK&SK初始化账号Client
         @return: Client
         @throws Exception
         """
         # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
         # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
         config = open_api_models.Config(
             # 这里是access key 和secret 我分别将它们存储在两个环境变量中,调用即可。
             access_key_id=os.environ['Ali_Key'],
             access_key_secret=os.environ['Ali_Secret']
         )
         # Endpoint 请参考 https://api.aliyun.com/product/Cdn
         config.endpoint = f'cdn.aliyuncs.com'
         return Cdn20180510Client(config)
    
     @staticmethod
     def main(domain_name,
         args: List[str],
     ) -> None:
         client = Sample.create_client()
         print(domain_name)
         set_cdn_domain_sslcertificate_request = cdn_20180510_models.SetCdnDomainSSLCertificateRequest(
             domain_name=domain_name,
             sslprotocol='on',
             cert_type='upload',
             sslpub=open('/path_to/ssl_cert').read(),#这里面的文件路径是证书的路径
             sslpri=open('/path_tp/ssl_key').read()#这里面的文件路径是证书的路径
         )
         print(set_cdn_domain_sslcertificate_request.sslpub)
         print(set_cdn_domain_sslcertificate_request.sslpri)
         runtime = util_models.RuntimeOptions()
         try:
             # 复制代码运行请自行打印 API 的返回值
             client.set_cdn_domain_sslcertificate_with_options(set_cdn_domain_sslcertificate_request, runtime)
         except Exception as error:
             # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
             # 错误 message
             print(error.message)
             # 诊断地址
             print(error.data.get("Recommend"))
             UtilClient.assert_as_string(error.message)
    
     #下面函数没用到,所以没有更改代码,有需要的自行更改
     @staticmethod
     async def main_async(
         args: List[str],
     ) -> None:
         client = Sample.create_client()
         set_cdn_domain_sslcertificate_request = cdn_20180510_models.SetCdnDomainSSLCertificateRequest(
             domain_name='sc.cdn.lawrenceshi.space',
             sslprotocol='on',
             cert_type='upload',
             sslpub='''-----BEGIN CERTIFICATE-----\
    MIIENjCCA7ygAwIBAgISAxgQmNuuUHdISZcyDYkqwySMMAoGCCqGSM49BAMDMDIx
    CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
    NjAeFw0yNDEyMDYyMzM5MDZaFw0yNTAzMDYyMzM5MDVaMBwxGjAYBgNVBAMTEWxh
    d3JlbmNlc2hpLnNwYWNlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETAoG/JxX
    5wEC88fu7tjLopOylmxXVNT3h8STo6JBXgWDvQ0dfMSH3Bqud4PSwFHWcfDUkW0m
    YXXRbQPuFX9RU6OCAsYwggLCMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggr
    BgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUr+NoFl6S
    dfr7UtHAw4OWBB1DQxQwHwYDVR0jBBgwFoAUkydGmAOpUWiOmNbEQkjbI79YlNIw
    VQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vZTYuby5sZW5jci5v
    cmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9lNi5pLmxlbmNyLm9yZy8wgc0GA1UdEQSB
    xTCBwoIXKi5jZG4ubGF3cmVuY2VzaGkuc3BhY2WCGCouY29kZS5sYXdyZW5jZXNo
    aS5zcGFjZYIYKi5nYW1lLmxhd3JlbmNlc2hpLnNwYWNlghMqLmxhd3JlbmNlc2hp
    LnNwYWNlggoqLmxsbHMudG9wghcqLm9yZy5sYXdyZW5jZXNoaS5zcGFjZYIcKi5w
    bGF0Zm9ybS5sYXdyZW5jZXNoaS5zcGFjZYIRbGF3cmVuY2VzaGkuc3BhY2WCCGxs
    bHMudG9wMBMGA1UdIAQMMAowCAYGZ4EMAQIBMIIBBQYKKwYBBAHWeQIEAgSB9gSB
    8wDxAHYAcyAiDwgWivnzxKaLCrJqmkoA7vV3hYoITQUA1KVCRFkAAAGTnoztpwAA
    BAMARzBFAiAtfxUoeVAgiAYPHzek8qsNLvrOX9XlZSxe2Rw/d/oSoAIhANnGOsJk
    x6YR/nvpcjW5Ewu/vBXdMeL+lukq1YwVb89EAHcAE0rfGrWYQgl4DG/vTHqRpBa3
    I0nOWFdq367ap8Kr4CIAAAGTnozucgAABAMASDBGAiEA9WfaJ4W5AGhQG/p6CmDR
    wWjla7bMV2NBWQ4FQdZ/s4UCIQCzNCtYyJ+mzi0KR8aVl2ykdWuYx510Uj+W3mfR
    yDSc5zAKBggqhkjOPQQDAwNoADBlAjAF1XdyssohVa7/xh+9KOsj8Bt0pjuJQ1O8
    GDE72T0uP8LLFJAVeuG5q0F2joagGdsCMQDNYSBHqJ3di0j+FYvgYd6JY043yYkm
    OcgJ6sqEChGhNM94HIuDK50Mjy1TKEgGSjU=\
    -----END CERTIFICATE-----\
    ''',
             sslpri='''这里没用到,所以没有更改代码,有需要的自行更改,这里原本放的是证书私钥
    '''
         )
         runtime = util_models.RuntimeOptions()
         try:
             # 复制代码运行请自行打印 API 的返回值
             await client.set_cdn_domain_sslcertificate_with_options_async(set_cdn_domain_sslcertificate_request, runtime)
         except Exception as error:
             # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
             # 错误 message
             print(error.message)
             # 诊断地址
             print(error.data.get("Recommend"))
             UtilClient.assert_as_string(error.message)
    
    
    if __name__ == '__main__':
     Sample.main('sc.cdn.lawrenceshi.space' , sys.argv[1:])
     Sample.main('bc.cdn.lawrenceshi.space' , sys.argv[1:])
     print('done','exit by code 0')
    

    只需要稍微修改一下就好了,我们这里使用的是python语言,把这个脚本放在acme,sh的自动更新程序里就好了,具体是这样子操作的

    acme.sh --installcert -d lawrenceshi.space --cert-file      /path_to/ssl_cert  --key-file /path_to/ssl_key --reloadcmd     "service httpd force-reload && service nginx force-reload && python3 /path_to/update_ssl.py"

    只要在service httpd force-reload后面再加个&& python3 /path_to/update_ssl.py就好

这个是上面的py代码下载链接,挂这里了哈,免费下载

那么今天的文章就写到这里,我回头还有篇笔记要写,回见!
又不懂的也可以在评论区里讲哈

Last modification:December 8, 2024