Golang部署HTTPS,GO下SSL证书部署实操记录
服务器:linux+nginx+golang
域名:wordsku.com
2022了大部分站都部署了HTTPS ,不能落后,下午西部1块钱买了个证书,上线部署新站
需要配置的有:
1)func (srv *Server) ListenAndServeTLS(certFile, keyFile string)
2)nginx的config配置
3)HTTP 301 HTTPS
具体步骤:
1)func (srv *Server) ListenAndServeTLS(certFile, keyFile string)的配置:
mhttp := &http.Server{
Addr: "127.0.0.1:端口号",
Handler: mservemux,
ReadTimeout: time.Second * 10,
WriteTimeout: time.Second * 10,
}
mhttp.ListenAndServe() #这个是HTTP的监听,部署HTTPS,我是注释掉的状态
mhttp.ListenAndServeTLS("路径/文件名.crt", "路径/文件名.key") #HTTPS监听
2)nginx的config配置:
宝塔环境下,每个站的nginx的配置为不同文件,大致路径:/www/server/panel/vhost/nginx/域名.conf,具体配置样例如下:
在当前监听80端口的 server{} 外新建一个server{}文件
server
{
#设置服务名,你的域名
server_name wordsku.com www.wordsku.com;
#开启SSL 443
listen 443 ssl; #特意说明下这里浪费我好久时间,查找资料需要另起一行:ssl on; 但是宝塔报错与重载配置报错,需要把ssl on; 删掉,在 listen 443 后加“SSL”;
#证书CRT文件路径
ssl_certificate 路径/文件名.crt;
#证书密钥key的文件路径
ssl_certificate_key 路径/文件名.key;
keepalive_timeout 70;
#WWW跳转不带WWW的域名
if ($host ~* "www.wordsku.com"){
return 301 $scheme://wordsku.com$request_uri;
}
#nginx 转发 go WEB服务接口
location / {
proxy_pass https://127.0.0.1:端口号;
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
3)HTTP 301 HTTPS
在监听80端口的server的{}里面添加:
#判断协议HTTP跳转HTTPS
if ($scheme = "http"){
return 301 https://wordsku.com$request_uri;
}
TAGS: