本文章是总结一下,也是为了下次的搭建做的笔记
ipv6
首先关于ipv6,我是用的阿里云进行申请,不同的云服务器商的申请方法会不同,这里仅介绍阿里云的方法。
第一:
如何申请ipv6?
这个阿里云的云文档写的已经很全了,毕竟我也没法写的那么多。
这个是文档
注意:默认开通是内网Ip,记得开公网ip,但是要付费,建议用按流量计费,并开启cdt,送流量,计费标准在控制台中(可能改变)。
第二:在测试时运用的常见问题
- Q:为什么我用检测网站检测出来可以正常访问,但是电脑无法访问ipv6单独的网站无法访问
A:可能时你的电脑不支持Ipv6访问,尝试用手机流量访问 - Q:如何设置服务器网站端的设置
A:nginx的设置方法:
要额外加一个代码
listen [::]:80;
而httpd则无须设置,自动就支持
另外,请不要忘记在设置完成后重启。
其他比较详细的方法可以参考这个文档
还有注意阿里云账号保持余额重组,其他就没有要注意的了
DNS
这个我要说的就很多了:
设置方法:
先进到控制台
然后按照顶上的方法来设置一下?
里面的回源选择域名,这个域名需要直接访问服务器。
其他可以自行百度
然后接下来就在官方文档以外了:
- Q:这个回源域名和加速域名是啥?
A:回源域名是从这个域名来获取各种文件,加速域名则是对用户展示的域名,加速域名顾名思义就是配置了cdn的域名 - Q:永久重定向怎么办?
A:参考下图
先访问: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为源站 如何自动更新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
就好
那么今天的文章就写到这里,我回头还有篇笔记要写,回见!
又不懂的也可以在评论区里讲哈