我在使用Plesk的Windows中有一台服务器。
我有一个域名(example.com),我也为此域名购买了SSL证书。
我刚刚成功安装并在我的服务器中配置域和ssl。所以现在我可以使用https://www.example.com或example.com加入我的网站,并将重定向到https:// ....
直到一切正常。
但是现在我已经在GoLang中开发了一个API,由于某种原因无法在443端口开始监听。 (我想也许是因为已经使用过?)所以我改为8081端口。现在,当我想向我的API发出请求时,我必须使用https://www.example.com:8081/api/v1/users。
问题是有些应用程序向我显示错误“证书无效”,我认为这是因为端口不是443.我有什么办法可以在443中运行吗?
GO中的代码是:( crt和key是GoDaddy提供的,是我购买SSL的地方)
func main() {
router := NewRouter()
handler := cors.AllowAll().Handler(router)
log.Fatal(http.ListenAndServeTLS(":8081", "tls.crt", "tls.key", handler))
}
答案 0 :(得分:1)
在nginx(反向代理)后面运行整个Golang应用程序:
使用您的域在Nginx中创建虚拟主机服务器块。 https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04
设置SSL证书
将该域指向您的Golang应用
server {
server_name example.com;
location / {
proxy_pass http://localhost:8081;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_pass_request_headers on;
proxy_read_timeout 150;
}
ssl_certificate /path/to/chainfile/example.com/abcd.pem;
ssl_certificate_key /path/to/privatekeyfile/example.com/abcd.pem;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
}