gpt4 book ai didi

戈朗 : How to handle and serve subdomains?

转载 作者:IT王子 更新时间:2023-10-29 02:03:26 26 4
gpt4 key购买 nike

问题在于为域以及子域 x、y、z(或在本示例中为 blog、admin 和 design)提供服务。运行以下命令并请求 blog.localhost:8080/firefox 时找不到服务器 www.blog.localhost:8080。

package main

import (
"html/template"
"log"
"net/http"
)

var tpl *template.Template

const (
domain = "localhost"
blogDomain = "blog." + domain
adminDomain = "admin." + domain
designDomain = "design." + domain
)


func init() {
tpl = template.Must(template.ParseGlob("templates/*.gohtml"))
}

func main() {


// Default Handlers
http.HandleFunc("/", index)

// Blog Handlers
http.HandleFunc(blogDomain+"/", blogIndex)

// Admin Handlers
http.HandleFunc(adminDomain+"/", adminIndex)

// Design Handlers
http.HandleFunc(designDomain+"/", designIndex)

http.Handle("/static/", http.StripPrefix("/static", http.FileServer(http.Dir("static"))))
http.ListenAndServe(":8080", nil)

}

func index(res http.ResponseWriter, req *http.Request) {
err := tpl.ExecuteTemplate(res, "index.gohtml", nil)
if err != nil {
log.Fatalln("template didn't execute: ", err)
}
}

// Blog Handlers
func blogIndex(res http.ResponseWriter, req *http.Request) {
err := tpl.ExecuteTemplate(res, "index.gohtml", nil)
if err != nil {
log.Fatalln("template didn't execute: ", err)
}
}

// Admin Handlers
func adminIndex(res http.ResponseWriter, req *http.Request) {
err := tpl.ExecuteTemplate(res, "index.gohtml", nil)
if err != nil {
log.Fatalln("template didn't execute: ", err)
}
}

// Design Handlers
func designIndex(res http.ResponseWriter, req *http.Request) {
err := tpl.ExecuteTemplate(res, "index.gohtml", nil)
if err != nil {
log.Fatalln("template didn't execute: ", err)
}
}

是否可以使用标准库为子域提供服务?如果是怎么办?

编辑:请求 localhost:8080/工作正常

EDIT2:我编辑了/etc/hosts 以包含子域:

127.0.0.1 blog.localhost.com
127.0.0.1 admin.localhost.com
127.0.0.1 design.localhost.com

对它们执行 ping 操作正常,但 firefox 无法连接到它们。

最佳答案

给定第二次编辑中的主机文件,您可以将 firefox 指向例如 blog.localhost.com:8080 但是您还必须处理该域模式,即 http.HandleFunc(blogDomain+":8080/", blogIndex).

如果这不是您想要的,您可以改为监听端口 80,即 http.ListenAndServe(":80", nil),您可能需要运行您的应用在 sudo 中以便它有权使用该端口,那么你的 blog.localhost.com 应该可以工作。

关于戈朗 : How to handle and serve subdomains?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42795286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com