You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Plesk服务器中GoLang HTTPS API无法监听443端口求助

解决GoLang API无法监听443端口的问题(Plesk + Windows环境)

嘿,我刚好在类似的Plesk+Windows环境里踩过这个坑,给你一步步拆解排查和解决办法:

第一步:确认443端口的占用情况

首先得实锤是不是真的被占用了,在Windows上打开管理员权限的命令提示符,执行以下命令:

netstat -ano | findstr ":443"

你会看到类似这样的输出:

TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       1234
TCP    [::]:443               [::]:0                 LISTENING       1234

这里的1234就是占用443端口的进程ID(PID),接着用下面的命令找到对应的进程名称:

tasklist /fi "PID eq 1234"

大概率你会看到是Plesk自带的Web服务器进程——比如w3wp.exe(IIS)或者nginx.exe,因为你已经配置了网站的HTTPS访问,这个服务自然会占用443端口。

第二步:推荐解决方案——反向代理(最稳妥)

既然Plesk已经在处理SSL证书和HTTPS流量了,完全没必要让Go API直接监听443。我们可以让Plesk把API相关的请求转发给Go API监听的其他端口(比如8080),步骤如下:

  1. 登录Plesk面板,找到你的域名example.com,进入网站与域名页面
  2. 找到Apache & nginx 设置(如果是Nginx+Apache架构)或者IIS 设置(纯IIS环境)
  3. 在反向代理规则部分,添加一条新规则:
    • 比如如果你的API路径是/api/*,就设置源为^/api/(.*)$,目标为http://localhost:8080/api/$1
    • 如果整个域名都是API服务,直接设置源为/*,目标为http://localhost:8080/$1
  4. 保存设置后,确保你的Go API代码监听本地端口,比如:
package main

import (
    "net/http"
    "fmt"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "API Response")
    })
    // 监听本地8080端口,不要监听0.0.0.0:443
    http.ListenAndServe(":8080", nil)
}

这样用户访问https://example.com/api时,Plesk会自动把请求转发到你的Go API,同时保留HTTPS的加密层,完美解决端口冲突。

其他可选方案(不推荐常规场景)

方案1:修改Plesk Web服务器的HTTPS端口

如果你一定要让Go API用443,可以把Plesk的Web服务器端口改成其他(比如4433),但这样用户访问你的网站就得加端口号(https://example.com:4433),破坏了原有访问体验,只适合特殊测试场景。

方案2:Windows端口转发

用系统自带的端口代理工具,把443端口的流量转发到Go API的端口,但前提是先停掉占用443的Plesk Web服务,命令如下(管理员权限执行):

netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=8080 connectaddress=127.0.0.1

这个方案的问题是你没法同时运行Plesk的网站和Go API,所以实用性很低。


内容的提问来源于stack exchange,提问作者Dex Sebas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:39:27