【问题标题】:Digital ocean domain always redirect to "/" page数字海洋域名总是重定向到“/”页面
【发布时间】:2021-04-25 02:26:28
【问题描述】:

我是 digitalocean 的新手,正在尝试部署我的 aiohttp 应用程序。我有一个域名,它已经设置在 digitalocean dns 记录中。

所以,在我的后端我有一个路由“/persons”,如果我去“{row_ip}/persons”就可以得到它,但如果我想用域名“{domain_name}/persons”来获取它它总是会将我重定向到“/”页面(并且还会从后端发出“/”请求)。有什么建议可以使用域名获取“{domain_name}/persons”吗?感谢您的宝贵时间。

【问题讨论】:

  • DNS 只是将域名解析为您应用的 IP,因此可能不是问题所在。您使用了什么 DNS 记录?您能否将 ${domain_name} 解析为您的 droplet 的正确 IP? nslookup ${domain_name}?可能是域没有传播。你在使用 TLS 吗?如果nslookup 正确解析,您可以尝试curl --request GET http://${domain_name}/persons 吗?如果您使用的是 TLS,那么 https://
  • 不,我不能请求它,它总是将我重定向到 http://${domain_name} 索引页面。我也可以在whatsmydns.net找到我的记录

标签: nginx redirect dns digital-ocean aiohttp


【解决方案1】:

以下对我有用:

我创建了一个基本的 Golang 网络服务器:

package main

import (
    "flag"
    "fmt"
    "log"
    "net/http"
)

var (
    port = flag.Int("port", 0, "HTTP server port")
)

func hello(w http.ResponseWriter, req *http.Request) {
    fmt.Fprintf(w, "hello\n")
}

func main() {
    flag.Parse()

    http.HandleFunc("/x", hello)
    http.HandleFunc("/y", hello)

    log.Printf("Starting server: %d", *port)
    log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", *port), nil))
}

构建它:

go build -o server .

创建Droplet并获取它的IP:

doctl compute droplet create ${INSTANCE} \
--region=${REGION} \
--size=${SIZE} \
--ssh-keys=${SSH_KEY} \
--image=${IMAGE}

IP=$(doctl compute droplet get ${INSTANCE} \
--format PublicIPv4 \
--no-header)

更新 DNS:

doctl compute domain records create ${DOMAIN} \
--record-type=A \
--record-name=${INSTANCE} \
--record-data=${IP} \
--record-ttl=3600

nslookup ${INSTANCE}.${DOMAIN}

复制二进制文件:

scp \
-i ${ID} \
${PWD}/server \
root@${INSTANCE}.${DOMAIN}:.

SSH 进入并启动服务器:

PORT="6666"
ssh \
-i ${ID} \
root@${INSTANCE}.${DOMAIN} \
./server --port=${PORT}

然后测试一下:

curl http://${INSTANCE}.${DOMAIN}:${PORT}/x
hello

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2019-09-30
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多